NServiceBus PubSub - как разбить бинарные зависимости между pub'r и sub'r? - PullRequest
0 голосов
/ 25 мая 2011

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

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

MyNamespace.MyMessageType, MyNamespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=MyPublicKeyToken

К сожалению, издатель публикует сообщения из сборки с неназванным именем.Поэтому при публикации процесс оценки подписки не может быть успешно оценен по моей подписке, поскольку маркер открытого ключа публикуемого сообщения (значение = ноль) не соответствует моей подписке.

Мой вопрос: могу ли я не подписываться на сообщения только по типу и версии?Еще лучше - могу ли я не подписываться на сообщения, основанные на каком-то внешнем контракте (например, XSD), и полностью разбить эту зависимость?

Заранее большое спасибо.

ОБНОВЛЕНИЕ: Документы NSB намекают на что-товот так вот:

http://www.nservicebus.com/MessagesAsInterfaces.aspx

1 Ответ

1 голос
/ 26 мая 2011

Для создаваемых вами обычных сообщений вы можете использовать инструмент XsdGenerator в каталоге инструментов NSB, чтобы сгенерировать схему, которую вы можете передать другим конечным точкам.Вы захотите использовать этот инструмент вместо .NET Framework, поскольку он не поддерживает интерфейсы.Оттуда вы можете использовать схему для обработки сообщений.

Для сообщений подписки, если вы не хотите использовать сборку, вы можете указать NSB DoNotAutoSubscribe () и подписаться вручную (Bus.Subscribe (Type)), передавая тип сообщения по вашему желанию.Это может быть вне схемы или другой конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...