Понимание разрешений Rabbitmq

Я пытаюсь настроить паб/подсистему. Мой технический директор предложил использовать Rabbitmq и STOMP для проекта, который мне поручили.

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

Например, если кто-то работает в компании widgetInk, при входе на наш веб-сайт он получит соединение с обменом widgetInk.whatever и обменом AllUsers.whatever, но это все. если клиентская сторона попытается подписаться на что-то еще, она получит сообщение об ошибке.

Я просмотрел все учебные пособия по RabbitMQ и просмотрел их разделы с инструкциями. Я нашел эту основную статью о контроле доступа, но, прочитав ее уже три раза, я до сих пор не знаю, rabbitmq хорошо подходит для моих требований.

Можно ли настроить Rabbitmq под мои требования? Какие ресурсы я могу использовать, чтобы узнать о системе разрешений Rabbitmq? Кто-нибудь собирал или использовал такую ​​систему? Будет ли в моих интересах переход на ZeroMQ или ActiveMQ?


person AlexLordThorsen    schedule 14.08.2012    source источник


Ответы (1)


Я хотел бы упомянуть другую платформу, которую вы могли бы использовать: Autobahn (с открытым исходным кодом) или WebMQ (на основе Autobahn).

WebMQ предоставляет эти функции (помимо множества других готовых):

  • PubSub через WebSocket (WAMP)
  • Аутентификация клиентских сессий (WAMP-CRA)
  • тонкая настраиваемая авторизация для тем

Если вы хотите пойти по пути открытого исходного кода/создать самостоятельно, вот несколько учебники. Если вам нужен интегрированный коммерчески поддерживаемый продукт с веб-интерфейсом для настройки/администрирования, свяжитесь с нами.

Отказ от ответственности: я создатель Autobahn/WAMP и работаю в Tavendo.

person oberstet    schedule 14.08.2012
comment
Я бы на самом деле попробовал, если бы это был только мой проект. Проблема, которую я вижу в этом, заключается в том, что я пытаюсь управлять серверной частью с помощью c/c++, поскольку наш основной серверный клиент написан на c/c++, и все, что я выберу, должно будет интегрироваться с ним. Я знаю, что Python может интегрироваться с c/c++, но я довольно низко стою на тотемном столбе, и моя компания не привыкла к Python как к языку. - person AlexLordThorsen; 14.08.2012
comment
RabbitMQ написан на Erlang. Тесная интеграция между Erlang и C++ возможна (как и в случае с Python), но, вероятно, не тривиальна. Другое дело, если у вас есть клиент на C++, который обращается к серверу WebSocket/брокеру сообщений PubSub. В настоящее время нет клиентской библиотеки WAMP для C++. Последнее было бы возможно с ограниченными усилиями при использовании надежной библиотеки WebSocket, такой как WebSocket++ (на основе C++/ASIO). - person oberstet; 14.08.2012
comment
В настоящее время я пытаюсь заставить плагин RabbitMQ-c работать с моей серверной частью. Я посмотрю на WebSocket++. Мой текущий стек решений — stomp.js || Sockjs.js || Rabbitmq-веб-топать || кролик || кролик mq-c. Я новичок в WebSockets, и этот проект был... интересен для изучения. Спасибо за альтернативное прочтение. - person AlexLordThorsen; 15.08.2012