Rabbitmq обязательный обмен для обмена
Я ищу способ защитить систему обмена сообщениями на моих сайтах, чтобы пользователи могли получать только те данные, к которым у них должен быть доступ. Имея это в виду, я подумал о системе, где у меня есть основной обмен темами, на который мой сервер будет отправлять все сообщения.
Веб-сайт содержит идентификатор сессии для каждого пользователя. Когда пользователь проходит проверку подлинности, создается другой обмен с именем sessionId. Пользователю на стороне клиента разрешено связываться со всеми биржами, кроме главного. Поскольку сессионные идентификаторы уникальны, было бы очень трудно угадать сессионный идентификатор другого пользователя и выполнить привязку, чтобы получить их сообщения.
каждое сообщение будет иметь ключ маршрутизации sessionID.destination. Клиентская сторона будет знать все потенциальные направления.
Чтобы помочь визуализировать:
-> SessionID Exchange -> client
Server -> master Exchange | -> SessionID Exchange -> client
-> SessionID Exchange -> client
Мой вопрос в два раза. Можно ли привязать обмен к обмену в rabbitmq? Кроме того, кто-то ранее настраивал подобную систему? Скорее, у кого-нибудь с опытом в этой теме уже есть работающая система, которую я могу использовать?
Заранее спасибо.
3 ответа
Да, это можно связать и обменять и обменять. Вы можете даже иметь различные типы обменов. Вам нужно использовать channel.exchangeBind()
вместо channel.queueBind()
, Но это работает аналогичным образом.
У меня есть обмен темами, связанный с обменом фанатов в моей системе. Я обязательно отправляю ключ маршрутизации с сообщениями, отправленными на разветвленную биржу. Это не влияет на уровень обмена разветвлениями, но когда он направляется в обмен тем, ключ маршрутизации затем используется для определения того, в какие очереди он отправляется.
Я нашел этот блог, в котором говорилось о чем-то похожем на мой дизайн. Это не совсем то же самое, но это дало мне знать, что это по крайней мере возможно.
В случае привязки одного обмена и нескольких очередей сообщения, отправленные клиентом, будут доставлены через обмен в возможные очереди на основе привязок. Это означает, что сообщение от клиента достигнет очереди назначения через обмен в один переход.
Рассмотрим случай, когда вы хотите, чтобы сообщения отправлялись в возможные очереди назначения на основе привязок, ТАКЖЕ делайте больше переходов на другой обмен и его привязку к очереди. В таких случаях обмен на обмен обязателен для цели.
Привязка очереди к обмену является дорогостоящим процессом. Обмен к обмену привязкой является более гибким и лучшим решением для масштабируемости. Клиент может создать свою собственную частную биржу и привязать к бирже специального назначения на сервере. Связывание с обменом на обмен лучше в производительности и решает проблемы масштабируемости.