Двусторонний SQL Service Broker - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь использовать SSB как инфраструктуру полнодуплексного обмена сообщениями для нескольких распределенных логических станций. Несколько станций могут находиться в одном и том же процессе или на разных машинах (не имеет значения). Станции должны общаться и синхронизироваться друг с другом, постоянно отправляя сообщения туда и обратно. Станции работают как часть службы Windows, поэтому срок службы станции очень большой. Каждое сообщение, которое отправляет станция, может быть назначено одной станции или нескольким станциям или всем станциям (широковещательная передача). Сообщение относится к конкретной станции, только если оно предназначено для этой конкретной станции или является широковещательным сообщением.

Вся терминология SSB "Диалог / Разговор / Группа" действительно запутала меня.

Я не могу понять, как определить, кто и когда должен стать Инициатором / Целью, потому что, согласно моему случаю, каждая станция может отправлять сообщение в любое время и должна получать соответствующие сообщения все время.

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

Согласно Microsoft , я должен использовать много разговоров со многими сообщениями для оптимальной производительности. Но я не могу понять, когда и как я должен создать отдельный диалог / разговор, и когда должен закончиться разговор, если вообще.

Может кто-нибудь, пожалуйста, пролить свет на это и дать мне правильное направление для моего дела?

Спасибо.

1 Ответ

0 голосов
/ 04 июля 2018

Предполагая, что на каждой станции есть инвентарь всех остальных (что может занять некоторое удержание руки!), Это должно быть выполнимо.

Что касается терминологии инициатора / цели, то, кто бы ни начинал разговор, он является инициатором, а получатели этого сообщения являются целями. Представьте себе следующий разговор в реальном мире. Я буду добавлять любые сообщения, отправленные инициатором, с [I], а сообщения, отправленные целью, с [T]

  • [I] Привет универмаг. Скажите, какие у вас носки для покупки.
  • [T] Мы продаем красные, белые и синие носки.
  • [I] Я возьму две пары красных носков.
  • [T] Хорошо

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

Интуитивно понимая, почему вам нужно знать, кто является инициатором и целью, вышеуказанный диалог можно разбить на следующие типы сообщений: InventoryRequest, InventoryResponse, PurchaseaceRequest, PurchaseResponse. Если вы соберете их всех в один контракт, вы должны отправиться в гонки.

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