我试图使用Bunny从队列中读取消息。我只对RabbitMQ服务器有读取权限,但似乎我使用的代码尝试创建队列 - 尽管我可以看到队列已存在queue_exists?()
。
Bunny中必须有一个进程,可以简单地从现有队列中读取消息吗?这是我使用
的代码require 'bunny'
class ExampleConsumer < Bunny::Consumer
def cancelled?
@cancelled
end
def handle_cancellation(_)
@cancelled = true
end
end
conn = Bunny.new("amqp://xxx:xxx@xxx", automatic_recovery: false)
conn.start
ch = conn.channel
q = ch.queue("a_queue")
consumer = ExampleConsumer.new(ch, q)
当我执行上述操作时,我收到:
/Users/jamessmith/.rvm/gems/ruby-1.9.3-p392/gems/bunny-1.7.1/lib/bunny/channel.rb:1915:in `raise_if_continuation_resulted_in_a_channel_error!': ACCESS_REFUSED - access to queue 'a_queue' in vhost '/' refused for user 'xxx' (Bunny::AccessRefused)
答案 0 :(得分:0)
在我看过的大多数RMQ配置中,消费者将有权创建他们需要的队列。
如果您必须设置权限,以便无法从消费者创建队列,我建议opening an issue ticket with the Bunny gem。它看起来不支持