我使用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')
当我为用户将配置权限设置为。*时,它就起作用了。我可以写入队列,但不能读取。但是这样,用户可以创建自己想要的命名队列...
因此,似乎需要配置权限才能打开队列(即使它是现有队列?)。
我在这里想念什么?
答案 0 :(得分:0)
声明队列时,您需要将被动设置为true。如果将被动设置为true,则配置权限将不会应用,如果用户尝试创建非预定义的队列,则会引发错误。
q = ch.queue("calc", durable: true, passive: true)