我正在使用Python中的Kombu来消费一个持久化的RabbitMQ队列。
在Windows上,只有一个消费者在消费队列。该消费者出现以下错误:
Traceback (most recent call last):
File ".\consumer_windows.py", line 66, in <module>
message.ack()
File "C:\Users\Administrator\Anaconda2\lib\site-packages\kombu\message.py", line 88, in ack
self.channel.basic_ack(self.delivery_tag)
File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\channel.py", line 1584, in basic_ack
self._send_method((60, 80), args)
File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\abstract_channel.py", line 56, in _send_method
self.channel_id, method_sig, args, content,
File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\method_framing.py", line 221, in write_method
write_frame(1, channel, payload)
File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\transport.py", line 182, in write_frame
frame_type, channel, size, payload, 0xce,
File "C:\Users\Administrator\Anaconda2\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10054] An existing connection was forcibly closed by the remote host
队列最多同时有500条消息。每条消息的大小很小,但是它是一个任务,需要花费长达10分钟的时间才能完成(通常每个消息需要少于5分钟)。
我尝试重新启动消费者、RabbitMQ服务器以及删除队列,但是错误仍然存在。
我看到了 这个问题,但是答案是来自2010年,我的rabbitmq.log中有不同的条目:
=ERROR REPORT==== 24-Apr-2016::08:26:20 ===
closing AMQP connection <0.6716.384> (192.168.X.X:59602 -> 192.168.Y.X:5672):
{writer,send_failed,{error,timeout}}
在 rabbitmq-sasl.log 中没有最近的事件。
为什么会出现这个错误,如何防止它发生?