Javascript RabbitMQ队列发布访问被拒绝

Javascript RabbitMQ队列发布访问被拒绝,javascript,rabbitmq,rabbitmq-stomp,Javascript,Rabbitmq,Rabbitmq Stomp,设置用户仅向特定队列授予发布权限Q1 许可 配置:“ 写入:^(Q1)|(amqp.default)$ 内容如下:“ 使用的协议:STOMP RMQ版本:3.6.X 使用上述权限发布到Q1时拒绝访问 如果将Configure设置为^(Q1)$,它将正常工作,不会出现任何问题。但设置配置权限也将允许用户在Q1上执行queue.delete和queue.declare操作 案例:从后端/RMQ管理创建队列,以便stomp客户端可以通过直接amqp.default exchange和路由密钥作为队列名

设置用户仅向特定队列授予发布权限Q1

许可

配置:“

写入:^(Q1)|(amqp.default)$

内容如下:“

使用的协议:STOMP

RMQ版本:3.6.X

使用上述权限发布到Q1时拒绝访问

如果将Configure设置为^(Q1)$,它将正常工作,不会出现任何问题。但设置配置权限也将允许用户在Q1上执行queue.delete和queue.declare操作

案例:从后端/RMQ管理创建队列,以便stomp客户端可以通过直接amqp.default exchange和路由密钥作为队列名称发布到该队列。因此,客户端只有对队列的写入权限,而没有配置或读取权限


如果用户只需要发布到队列,而不需要读取或配置队列,那么对于相同的问题,最好的解决方案是什么?

首先,请记住,在RabbitMQ中发布到Exchange,而不是队列。然后,读取以确定如何将配置、写入和读取权限应用于要执行的操作

最后,由于使用了STOMP插件,用户必须具有
configure
权限才能创建回复队列。这是由于STOMP是如何在RabbitMQ()中实现的



注意:RabbitMQ团队监视并有时只回答有关StackOverflow的问题。

STOMP协议需要配置权限,因此必须提出不同的方法。()

创建了exchangeE1,并授予用户写入权限

将队列Q1绑定到E1,这样发布到E1的每条消息都会路由到Q1


在这种方法中,STOMP客户端只需要写入权限就可以发布到exchangeE1,而不需要读取或配置权限

我知道我们发布到exchange,而不发布到队列,因此使用amqp.default授予写入权限,因为amqp.default是exchange,Q1是路由密钥。因此,消息将发布到默认exchange并路由到路由密钥。设置写入权限时,为什么路由密钥需要配置权限?对于默认的直接交换,交换名称为
amq.default
。如果您的代码试图声明队列,它将需要配置权限。我怀疑您的问题与未使用正确的exchange名称和试图声明队列(需要配置权限)有关。已通过后端代码/rabbitmq管理ui生成持久队列,以便客户端(JavaScript)必须使用路由密钥发布到默认exchange。这样客户端就不必配置或创建队列。所有客户端都将具有对此队列的写入权限,但没有配置或读取权限。示例使用stomp
var client=stomp.over(ws)client.send('/queue/Q1',{“content type”:“text/plain”},“Hello”)如果提到您正在通过
rabbitmqwebstomp
插件使用stomp协议,那会很有帮助。在RabbitMQ()中实现STOMP协议的方式需要配置权限来创建回复队列。很抱歉,没有提及使用的协议。感谢您的链接,有什么原因可以解释它与其他协议相比在stomp方面有所不同吗?