我正在撰写移动应用程序,并考虑 RabbitMQ 进行用户对用户消息传递。据我了解,每个客户端都可以通过发布到其队列来监听它的唯一队列(在用户ID之后命名)和向其他客户端发送消息。但我担心这种模式是不可靠的,因为讨厌的客户可能会从其他人的队列中读取,从而扰乱整个计划。
有没有办法对RabbitMQ队列/交换机施加基本的读写权限,从而提供安全性?或者我是否认为整个概念都是错误的,而点对点通信本身并不是为此而设计的?
答案 0 :(得分:0)
Access control在RabbitMQ中实现。如果您希望用户U0只具有对队列Q0的读访问权限,则可以将U0读取权限设置为^QO$
。如果您希望更好地控制用户权限,则必须在服务器端的应用程序中实现此功能。
然而,我会说你的设计不能很好地扩展。虽然您可以对delcare进行队列和交换的数量没有任何硬编码限制,但是您应该保持这个数字非常合理,因为它有点资源密集。如果每个用户正在消耗其队列,则100万用户将意味着100万个队列/交换过程以及可能100万个已打开的套接字。不确定单个主机是否能正确处理此问题。
对于消息传递应用程序,我宁愿建议您使用任何持久性数据库。 RabbitMQ并不适合这种用例。