Динамические ACL в RabbitMQ - PullRequest
3 голосов
/ 13 мая 2011

Я рассматриваю полезность RabbitMQ для создания системы многопользовательского чата. Люди смогут общаться в разных комнатах, в некоторых общедоступных, частных, а также в личных беседах. Можно ли будет реализовать функциональность частных комнат только для приглашенных? Для индивидуального общения я мог бы использовать произвольные строки для имен очереди / обмена, но это не сработало бы для частных комнат, где возможность должна быть отозвана.

Доступна ли (выбранным) клиентам функциональность rabbitmqctl и насколько масштабируемы ACL? Может ли ACL ссылаться на имя пользователя для правила, соответствующего "<user>.*"?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Я думаю, у меня есть начало работоспособного решения этой проблемы. Я создам публичный обмен, на который любой пользователь может отправить запрос на присоединение к комнате. «Серверное» программное обеспечение (фактически просто еще один клиент RabbitMQ) потребляет из этой очереди, и если пользователю разрешено присоединиться, то оно связывает обмен разветвлением исходящих сообщений комнаты с очередью пользователя. Пользователи получат ACL, включающий что-то вроде ^public/.*, поэтому они смогут публиковать его только в открытом обмене.

0 голосов
/ 18 мая 2011

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

Если вы ищетепостройте клиент чата, вам было бы намного лучше, если бы вы использовали ejabberd (http://www.ejabberd.im/), который создан именно для такого сценария:

многопользовательский чат с eJjabberd

...