Как настроить MessageEndpointMapping по пространству имен в NServiceBus - PullRequest
12 голосов
/ 01 апреля 2010

Я пытаюсь настроить сопоставление моей конечной точки сообщения в конфигурации NServiceBus, отправляя сообщения из разных пространств имен в разные конечные точки.

Таким образом, я настроил в своем файле web.config следующее:

<MessageEndpointMappings>
    <add Messages="Company.Messages.Accounts" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Payments" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Cancellations" Endpoint="ServiceInput" />
    <add Messages="Company.Messages.Notifications" Endpoint="ServiceInput" />
</MessageEndpointMappings>

Однако, когда мое приложение запускается, я получаю следующее исключение:

Spring.Objects.PropertyAccessExceptionsException: PropertyAccessExceptionsException (1 ошибка);Вложенные исключения PropertyAccessException: [Spring.Core.TypeMismatchException: невозможно преобразовать значение свойства типа [System.Collections.Hashtable] в требуемый тип [System.Collections.IDictionary] для свойства 'MessageOwners'., Внутреннее исключение: System.ArgumentException: проблема при загрузкесборка сообщения: Company.Messages.Payments ---> System.IO.FileNotFoundException: не удалось загрузить файл или сборку «Company.Messages.Payments» или одну из ее зависимостей.Система не может найти указанный файл.Имя файла: 'Company.Messages.Payments'

Мне кажется интересным то, что он обнаружил Company.Messages.Accounts, но произошел сбой во второй сконфигурированной строке.Я подумал, что, может быть, ему не нравится, когда все они переходят на одну и ту же конечную точку, но изменение этой конфигурации, чтобы они использовали разные конечные точки, не изменило полученное сообщение об ошибке.

Что я делаю не так?Разве нельзя сегментировать сообщения по пространству имен (все, что я видел, это по типу и по сборке)?

Спасибо, Стив

Ответы [ 3 ]

14 голосов
/ 02 апреля 2010

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

5 голосов
/ 19 мая 2010

По этой странице вы можете указать тип: http://docs.particular.net/nservicebus/messaging/message-owner

Определенные типы могут быть настроены с использованием их полного имени: «namespace.type, assembly»

0 голосов
/ 14 августа 2014

Начиная с NServiceBus v3.3, пространства имен можно использовать для фильтрации отображений сообщений

http://docs.particular.net/nservicebus/messaging/message-owner

...