Как добавить сервисную зависимость в NServiceBus Generic Host - PullRequest
1 голос
/ 26 октября 2011

У меня есть следующие услуги Макет:

  • Служба интерфейса (генерирует команды из запросов WCF, запросов TCP, опросов и т. Д.)
  • Worker Service (использует команды, сгенерированные службой интерфейса и публикует события)
  • Служба обработчика событий (обрабатывает события, сгенерированные службой работника)

Я использую хранилище подписок MSMQ.

Моя текущая проблема заключается в том, что мне нужно запустить службу обработчика событий после работающей службы . Если я сделаю это в обратном порядке или перезапущу службу работника, публикации не будут получены службой обработчика событий .

.

Моя первая идея - добавить зависимость службы от службы обработки событий .

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

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Если вы используете MSMQ в качестве хранилища подписки, сделайте очередь подписки транзакционной.

Тогда сообщения подписки от службы обработчика событий останутся в очереди подписки рабочей службы даже после перезапуска.

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

ОБНОВЛЕНИЕ

На самом деле это строго не соответствует действительности, поскольку создание транзакционных очередей обеспечит вам долговечность при перезапусках сервера.

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

0 голосов
/ 26 октября 2011

Я бы рекомендовал использовать вариант подписки на БД.Это будет держать ваши подписки вокруг.

...