Как спроектировать запланированные задачи в архитектуре на основе сообщений? - PullRequest
0 голосов
/ 06 января 2012

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

Ежедневно и ежемесячно я должен генерировать отчет о заказе.Обычно у меня был бы обработчик сообщений заказа, хранящий заказ в базе данных, а затем было бы запланированное задание, которое считывало бы из базы данных и генерировало отчет.Но мне было интересно, есть ли более ориентированный на сообщения способ сделать это?

Я думал о том, чтобы обработчик сообщений заказа опубликовал сообщение, на которое могут подписаться различные службы отчетности (например, ежедневно и ежемесячно).Сообщения будут накапливаться в определенной очереди до тех пор, пока сервисы не будут активированы с заданными интервалами (ежедневно / ежемесячно).Затем службы будут обрабатывать сообщения в своей очереди и генерировать отчет.Это путь или я далеко?

Любые указатели будут с благодарностью.

Обновление

Можно ли (с NServiceBus) хранить сообщения в очереди издателя, а затем публиковать их только с заданным интервалом?Или же все должно быть наоборот, чтобы издатель немедленно опубликовал, и обработка подписчиком была запланирована?

Ответы [ 2 ]

1 голос
/ 09 января 2012

Служебная шина сама поддерживает запланированные сообщения, где вы можете установить ScheduledEnqueueTime, и тогда сообщение будет доступно.Таким образом, вы можете использовать его для планирования времени / событий.Детали об этой собственности доступны здесь: http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx

0 голосов
/ 06 января 2012

NServiceBus реализует концепцию под названием Sagas для длительных процессов.Взгляните на http://nservicebus.com/Sagas.aspx Я думаю, что раздел Timeout относится к тому, что вы ищете.

...