我尝试RabbitMQ与this Python绑定。如何设置的RabbitMQ服务器超时检测?
我注意到的一件事是,如果我不洁地杀死一个消费者(模拟一个崩溃的程序),服务器会认为这个消费者仍然存在很长时间。这样做的结果是每个其他消息都将被忽略。
例如,如果您杀死消费者1次并重新连接,则1/2消息将被忽略。如果你杀了另一个消费者,那么2/3消息将被忽略。如果你杀了3,然后3/4的邮件都将被忽略等等。
我试着打开确认,但似乎并没有被帮助。我发现的唯一解决方案是手动停止服务器并重置它。
有没有更好的方法?
如何重建这种情况下
运行的RabbitMQ。
取消存档this library。
下载消费者和发行商here。 运行amqp_consumer.py两次。运行amqp_publisher.py,在一些数据反馈,并观察它按预期工作。消息以循环方式接收。
用kill -9或任务管理器杀死其中一个消费者进程。
现在,当您发布消息时,50%的消息将会丢失。
我更新了我的答案。 – 2009-09-06 10:48:26
我无法复制此内容。你使用的是什么版本的 – 2010-02-03 13:24:34
好问题 - 如果在防火墙或IP负载平衡设备后运行,在N秒后丢弃空闲套接字,这是一个关键问题,因为RabbitMQ和客户端都不会被告知套接字已经消失直到他们尝试使用它。 – 2011-05-07 14:00:26