Мост между 2 NServiceBus с SqlTransport
У меня есть 2 шины NServiceBus, оба из которых настроены на использование Sql Transport. Я хотел бы выполнить следующие действия между ними:
1) Публиковать события
2) Отправить команды (нет паба / саба для этого).
После изучения этого я пришел к ряду вариантов решения:
1) Используйте HTTP-шлюз. Я не использовал эту опцию, так как я предпочел бы сохранить всю активность в отношении баз данных. Поэтому я обесценил это.
2) Адаптируйте образец SqlBridge из NServiceBus.SqlServer.Samples на Github. Похоже, что он имеет возможность контролировать входную очередь (хотя и в Msmq), а затем публиковать на своей собственной шине, где подписчики могут затем получать события. У меня есть несколько вопросов по этому решению:
- Может ли этот образец быть адаптирован для автобусов Sql -> Sql?
- Что будет указано для входного адреса, так как, по-видимому, вам нужно указать и строку подключения, и таблицу, с помощью которой можно отслеживать события?
- возможно более широкий вопрос, но это решение основано на использовании IAdvancedSatell. Я не смог найти определение IAdvancedSatell (или даже ISatell) и почему я бы подумал об его использовании. Каковы варианты использования для этого?
3) Индивидуальное решение. (Я взял большую часть деталей из этого, чтобы быть кратким и сохранить эти утомленные глаза:-)) Это решение включает в себя выделенную (не NServiceBus) базу данных, в которую хосты NSB будут публиковать сообщения. Чтобы соединить 2 шины, хост NSB должен обработать сообщение и записать в таблицу событий. На другой шине хост NSB будет отслеживать эту таблицу, используя IWantToRunWhenBusStartsAndStops, а затем отправлять на свою шину.
Мне нравится идея варианта 2, так как он использует существующие конструкции (всегда предполагая, что у меня есть понимание IAdvancedSatell, которое, я надеюсь, кто-то может предоставить)
2 ответа
Я решил это с помощью образца IAdvancedSatell. Я адаптировал это, предоставив строку подключения и очередь в "источнике", чтобы спутник получал сообщения для передачи в шину назначения. Вещи, чтобы принять к сведению:
1) Вы должны создать очередь SQLBridge на шине 'source'. 2) Необходимо создать подписку на событие от исходного издателя в очередь SQL Bridge на исходной шине.
Вышеуказанные 2 пункта были бы тривиальны для автоматической настройки, но в настоящее время мое решение - только PoC.
С уважением.