只有写入权限才能与 Bunny 一起排队 gem

Having only write rights to queue with Bunny gem

我使用 Bunny gem 并在 RabbitMQ 中配置了一个用户,如下所示:

virtual host  / 
configure:   device1\..*
write:       .*
read:        device1\..*

目标是:用户应该能够创建一个这样命名的队列:device1.mail 并且应该能够读/写它。 对于所有其他队列,我只想授予用户写入权限(而不是读取权限)。

当我尝试使用 Bunny 写入名为 calc 的现有持久队列时,出现错误:

conn = Bunny.new('amqp://device1:device1@128.0.0.0:5672')
conn.start
ch = conn.create_channel
q = ch.queue("calc", durable: true)

Bunny::AccessRefused (ACCESS_REFUSED - access to queue 'calc' in vhost '/' refused for user 'device1')

当我将用户的配置权限设置为 .* 时,它就可以工作了。我可以写入队列,但不能读取。然而,用户可以创建他想要的名字的队列...

因此似乎需要配置权限才能打开队列(即使它是现有队列?)。

我在这里错过了什么?

声明队列时需要将passive设置为true。将 passive 设置为 true 时,将不会应用配置权限,如果用户尝试创建非预定义队列,则会引发错误。

q = ch.queue("calc", durable: true, passive: true)