Выбор типа обмена RabbitMq для модели отклика на запрос - PullRequest
0 голосов
/ 09 мая 2018

Мы находимся в процессе миграции существующей архитектуры на архитектуру на основе очередей. Наша система содержит один централизованный сервер, подключенный к более чем 300 системам KIOSK, где синхронизация данных выполняется для работы CRUD на основе sql.

Мы решили создать обмен и очередь для централизованного обслуживания и обмен с несколькими очередями (для каждого KIOSK) с использованием привязки заголовка.

KIOSK всегда инициирует синхронизацию (ограничение из-за юридических проблем). Поэтому мы решили использовать модель запроса / ответа.

Вопрос в том, можем ли мы использовать привязку обмена на основе заголовка для этой модели запроса / ответа.

1 Ответ

0 голосов
/ 11 мая 2018

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

Давайте представим, что вы делаете привязку на основе StoreLocationId и KioskId. Когда киоск отправляет свое сообщение на центральный сервер, он гарантирует, что StoreLocationId и KioskId включены в сообщение. Центральный сервер делает то, что ему нужно, и добавляет к ответному сообщению два заголовка сообщения: StoreLocationId и KioskId со значениями, полученными из киоска. Ответы, отправленные на этот обмен заголовками, теперь будут правильно перенаправлены в нужный киоск.

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

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

...