如何从Passenger和Bunny向RabbitMQ发送消息?

时间:2013-09-17 14:50:16

标签: ruby rabbitmq passenger

我使用Rabbitmq和Bunny gem来存储我们想要发送给客户的消息。我有一个基于Padrino的Web服务,它将消息推送到队列和许多使用消息的工作者。

当我使用Thin作为服务器时,它工作正常,但如果我在Apache / Passenger中启动Web服务,我会收到Bunny的“执行过期”消息。我在Passenger中看到了EventMachine的问题,但是Bunny没有使用EventMachine,所以它可能是一个不同的问题,尽管行为非常相似。

异常是“执行过期”,所以它正在等待永远不会到达的消息,所以我猜可能会出现回调问题,尽管代码非常简单。 Bunny向RabbitMQ打开一个频道,推送消息并关闭频道,因此没有轮询,也没有调用任何回调。

服务中的代码是:

client = Bunny.new
client.start
client.create_channel  # => throws exception, "execution expired"
...

1 个答案:

答案 0 :(得分:1)

我发现了问题。这是一个乘客问题,因为我将客户端实例绑定到类,并希望在多个请求上使用相同的连接。它工作很薄,但Passenger不喜欢这个解决方案。