我制作了一些教程脚本来解决 RabbitMQ/Haskell 绑定,并且发生了奇怪的消息丢失。与突发长度无关,接收方丢弃少量排队消息。我发现消费者“感知”到数据爆发的结束并放弃是非常令人难以置信的,但在我看来就是这样。下一次爆发愉快地开始,没有拉入“未收到”的东西。
代码和示例结果:https ://gist.github.com/3859009 。
那里没什么好看的,只有一个消费者和一个生产者。我试图刷新标准输出,但没有成功。
跟踪插件日志显示它实际上是一个发送问题。
检查 /var/log/rabbitmq/rabbit@hostname.log 产生了一些关于断开连接的警告:
=WARNING REPORT==== 10-Oct-2012::10:21:45 ===
closing AMQP connection <0.21203.0> (127.0.0.1:58180 -> 127.0.0.1:5672):
connection_closed_abruptly
我检查了我的代码,确实,closeConnection conn
doFlood 例程中没有。添加它解决了这个问题。