Мост между 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.

С уважением.

Посмотрите на этот выпуск

Если это то, что вы ищете, он доступен в 1.2.0 (посмотрите примечания к выпуску...)

Другие вопросы по тегам