仅具有与Bunny gem排队的写权限

时间:2018-11-09 22:22:37

标签: bunny

我使用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')

当我为用户将配置权限设置为。*时,它就起作用了。我可以写入队列,但不能读取。但是这样,用户可以创建自己想要的命名队列...

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

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

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

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