NServicebus MessageHandlers в другом проекте не получают удар - PullRequest
2 голосов
/ 25 октября 2011

Моя проблема: У меня есть веб-проект, который реализует NServicebus и должен слушать сообщения. Пытаясь сохранить свое решение в чистоте, я создал другой проект для всех моих обработчиков сообщений. Теперь я обнаружил, что эти обработчики сообщений не попадают в «сообщения».

Насколько я понимаю, NServicebus сканирует все библиотеки DLL в папке отладки веб-проекта, чтобы найти любые классы, реализующие IHandleMessages <>. Я ссылался на проект библиотеки классов обработчиков сообщений в моем веб-проекте, и он появился в моей папке отладки, однако, похоже, что он не был достигнут.

Что работает

  1. В примере проекта консоли включение ссылочного проекта, который содержит обработчики сообщений, работает как ожидалось.
  2. В моем веб-приложении это работает, когда я перемещаю перехватчики сообщений для самого проекта веб-приложения.

Чтение через веб-сайт http://docs.particular.net/nservicebus/hosting/nservicebus-host/ Я обнаружил, что существуют перегрузки для метода Configure.With (). Однако:

  • Я не знаю, нужны ли они мне. Они только показывают, что текст это ограничит места, где NServicebus ищет реализации интерфейса.
  • эти перегрузки не существуют в методе Configure.WithWeb, который я использую.

Я могу решить мою проблему, переместив все обработчики сообщений в мой веб-проект, но это не кажется лучшим решением.

Я что-то здесь упускаю?

1 Ответ

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

При использовании NServiceBus в веб-проекте используйте NServiceBus.Configure.WithWeb() вместо NServiceBus.Configure.With().

Кроме того, для загрузки обработчиков сообщений в веб-приложение необходимо включить строку .LoadMessageHandlers() после.UnicastBus() как описано в Размещение NServiceBus в вашем собственном процессе .В противном случае любые реализации IHandleMessages<T> не загружаются, и ваше веб-приложение работает как конечная точка только для отправки.

...