【问题标题】:Dynamic ACLs in RabbitMQRabbitMQ 中的动态 ACL
【发布时间】:2011-08-25 05:13:15
【问题描述】:

我正在考虑使用 RabbitMQ 创建多用户聊天系统。人们可以在不同的房间里聊天,一些是公共的,一些是私人的,还有私人的。是否有可能实现私人的、仅限邀请的房间的功能?对于人对人,我可以使用随机字符串作为队列/交换名称,但这不适用于需要可撤销功能的私人房间。

rabbitmqctl 的功能是否可供(选定的)客户端使用,ACL 的可扩展性如何? ACL 是否可以引用用户名,以获得匹配 "<user>.*" 的规则?

【问题讨论】:

    标签: acl rabbitmq amqp


    【解决方案1】:

    我想我已经有了一个可行的解决方案的开始。我将创建一个公共交换,任何用户都可以向该交换发送房间加入请求。 “服务器”软件(实际上只是另一个 RabbitMQ 客户端)从这个队列中消费,如果允许用户加入,那么 it 会将房间的传出消息扇出交换绑定到用户的队列。用户将获得包含 ^public/.* 之类的 ACL,因此他们只能发布到公共交换。

    【讨论】:

      【解决方案2】:

      您可以在 RabbitMQ 上在用户级别和单个资源(使用正则表达式的队列或交换)上配置 ACL - 但我认为大多数客户端不会公开此功能。

      如果您正在寻找构建聊天客户端,您最好使用专为这种场景构建的 ejabberd (http://www.ejabberd.im/):

      Multi-User Chat with eJjabberd

      【讨论】:

      • XMPP 在某些方面过于复杂,而在其他方面缺乏,所以它并不适合我正在做的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2017-10-25
      • 2018-10-21
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多