防止从一个用户向另一个用户发送消息时在RabbitMQ中进行拦截

防止从一个用户向另一个用户发送消息时在RabbitMQ中进行拦截,rabbitmq,amqp,Rabbitmq,Amqp,我最近开始使用rabbitmq。在前端,我使用SockJS+Stomp。在rabbitmq中,我创建类型为“topic”的exchange“messages”。在连接时,跺脚创建队列,如amq.gen-Uf_bUS-5GG3WyzOn_avMig,并订阅“消息”。我无法理解访问权限 考虑一个简单的动作。一个用户向另一个用户发送消息。如何确保rabbitmq中访问此消息的用户只有这两个 或者,例如,我需要只向一个用户发送一条系统消息。如何使此消息仅对该用户可用?在AMQP中,单个vhost中的任何

我最近开始使用rabbitmq。在前端,我使用SockJS+Stomp。在rabbitmq中,我创建类型为“topic”的exchange“messages”。在连接时,跺脚创建队列,如amq.gen-Uf_bUS-5GG3WyzOn_avMig,并订阅“消息”。我无法理解访问权限

考虑一个简单的动作。一个用户向另一个用户发送消息。如何确保rabbitmq中访问此消息的用户只有这两个


或者,例如,我需要只向一个用户发送一条系统消息。如何使此消息仅对该用户可用?

在AMQP中,单个vhost中的任何队列都可以绑定到任何交换机,因此任何具有从队列读取权限的AMQO用户都可以从队列中获取消息并读取它(并且在使用手动确认而不确认收到的消息时可能将其放回)

如果AMQP用户具有配置/写入权限,则可能无法访问任何实体,包括vhost中的消息

有关权限如何工作的详细信息,请参阅RabbitMQ手册

一般来说,将访问控制从应用程序级别移动到AMQP代理级别不是一个好主意。如果您希望应用程序中的特殊用户能够看到某些内容,只需在应用程序级别执行即可。您的应用程序用户和RabbitMQ用户并不完全相同。RabbitMQ用户在某种程度上类似于MySQL用户:他们只适合于特殊的需求