只有写入权限才能与 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)
我使用 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)