NServiceBus - получение статуса саги в приложении MVC 3 - PullRequest
1 голос
/ 27 января 2012

Я использую сагу NServiceBus для управления длительным бизнес-процессом.У меня есть приложение MVC 3, доступ к которому осуществляется с нескольких веб-серверов за балансировщиком нагрузки.

Цель состоит в том, чтобы пользователь мог инициировать процесс, и я хочу иметь возможность определять состояние саги.

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

Ответы [ 2 ]

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

Вы можете встроить в свой шаг Saga, чтобы при изменении статуса он передавал статус Bus.Sends () другой конечной точке, которая обновляет кэш или PVM, которые может просматривать ваше веб-приложение.Эта конечная точка может связываться с пользователем по другим каналам, например по электронной почте.Отталкивание этого к другой конечной точке продолжит вашу Сагу.

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

Сага может публиковать события, чтобы предать гласности статус вещей.Даже если не требуется, чтобы приложение MVC «регистрировалось», это, в любом случае, хорошая идея.

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

Чтобы справиться с этим, сага может поддерживать команду «Я забыл, что вы сказали, пожалуйста, перешлите».Приложение MVC отправит это при запуске веб-приложения (если знание достаточно важно) или по запросу.Затем Saga отправляет отчет о состоянии только этому серверу через Bus.Reply () только серверу, который не обновлен.

...