0

我使用 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"
...
4

1 回答 1

1

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

于 2013-09-18T09:04:32.020 回答