RabbitMQ 队列发布访问被拒绝
RabbitMQ queue publish access refused
为用户设置仅向特定队列发布的权限 Q1
权限
配置:“”
写入:^(Q1)|(amqp.default)$
阅读:“”
使用的协议:STOMP
RMQ 版本:3.6.X
使用上述权限发布到 Q1 时访问被拒绝。
如果 Configure 设置为 ^(Q1)$ 它可以正常工作。但是设置配置权限也将允许用户对 Q1.
进行 queue.delete 和 queue.declare 操作
案例:从 backend/RMQ 管理创建一个队列,以便 stomp 客户端可以通过直接 amqp.default 交换和路由键作为队列名称发布到它。这样客户端只有对队列的写入权限,没有配置或读取权限
如果用户只需要发布到队列而不需要读取或配置队列,那么最好的解决方案是什么?
首先,请记住您发布到 RabbitMQ 中的 exchanges,而不是队列。然后,阅读 this table 以确定如何将配置、写入和读取权限应用于您要执行的操作。
最后,由于使用了STOMP插件,用户必须有configure
权限才能创建回复队列。这是由于 STOMP 在 RabbitMQ 中的实现方式 (code)。
注意: RabbitMQ 团队监控 the rabbitmq-users
mailing list 并且有时仅在 Whosebug 上回答问题。
STOMP协议需要配置权限,所以不得不想出一个不同的方法。(RabbitMQ code)
创建了一个交换 E1 并授予用户 写入 权限
将队列 Q1 绑定到 E1 因此发布到 E1 的每条消息都会路由到 Q1
在这种方法中,STOMP 客户端只需要写入权限即可发布到交换 E1 而无需读取或配置权限
为用户设置仅向特定队列发布的权限 Q1
权限
配置:“”
写入:^(Q1)|(amqp.default)$
阅读:“”
使用的协议:STOMP
RMQ 版本:3.6.X
使用上述权限发布到 Q1 时访问被拒绝。
如果 Configure 设置为 ^(Q1)$ 它可以正常工作。但是设置配置权限也将允许用户对 Q1.
进行 queue.delete 和 queue.declare 操作案例:从 backend/RMQ 管理创建一个队列,以便 stomp 客户端可以通过直接 amqp.default 交换和路由键作为队列名称发布到它。这样客户端只有对队列的写入权限,没有配置或读取权限
如果用户只需要发布到队列而不需要读取或配置队列,那么最好的解决方案是什么?
首先,请记住您发布到 RabbitMQ 中的 exchanges,而不是队列。然后,阅读 this table 以确定如何将配置、写入和读取权限应用于您要执行的操作。
最后,由于使用了STOMP插件,用户必须有configure
权限才能创建回复队列。这是由于 STOMP 在 RabbitMQ 中的实现方式 (code)。
注意: RabbitMQ 团队监控 the rabbitmq-users
mailing list 并且有时仅在 Whosebug 上回答问题。
STOMP协议需要配置权限,所以不得不想出一个不同的方法。(RabbitMQ code)
创建了一个交换 E1 并授予用户 写入 权限
将队列 Q1 绑定到 E1 因此发布到 E1 的每条消息都会路由到 Q1
在这种方法中,STOMP 客户端只需要写入权限即可发布到交换 E1 而无需读取或配置权限