2014-07-01 4 views
1

я создал начал запланированную задачу сNServiceBus: Отмена запланированного задания

Schedule.Every(TimeSpan.FromMinutes(1)).Action("TaskName",TaskMethod); 

Теперь, если ручка моей Саги() вызывается, входящим сообщением, которое делает MarkAsComplete(), запланированная задача, которую я создал не отменить.

Как я могу отменить задачу?

ответ

0

От docs:

Когда задача создается она дается уникальный идентификатор. Идентификатор для задачи отправляется в сообщении диспетчеру тайм-аута. Когда тайм-аут и тайм-аут Менеджер возвращает сообщение , содержащее идентификатор для конечной с запланированной задачей, конечная точка использует этот идентификатор для извлечения и вызовите задачу из своего внутреннего списка задач.

и

Вы можете посмотреть на запланированную задачу как простой нескончаемый саги

Таким образом, задача планируется на уровне конечных точек - просто потому, что вы вызываете задача из саги не означает, что задача выполняется в том же «объеме», что и сага.

В примере, который они дают, планировщик создается при запуске шины, по-видимому, останавливаться только тогда, когда контейнер-хост перестает работать.

+0

Есть ли встроенный планировщик, который позволит мне создать задачу, которую я могу отменить? Или мне нужно использовать что-то вроде Quartz.Net? – user3344591

+0

Может быть какой-то недокументированный способ отмены задачи в NServiceBus, но в противном случае да, вы должны использовать другой планировщик с более богатым API. –

+0

Запланированная задача похожа на простую нескончаемую сагу. Если вы хотите, чтобы ваша запланированная задача была более сложной или завершена, вы можете написать полную сагу с любой бизнес-логикой, в которой вы нуждаетесь. –

Смежные вопросы