RabbitMQ Java客户端中我经常遇到Channel shutdown: connection error问题(在24.133.241:5671线程下,名称被截断了)(我的生产者和使用者相距甚远)。启用心跳(15秒)后,大多数情况下使用者会自动重新启动。但是,有些实例只有Channel shutdown: connection error,没有Consumer raised exception,也没有Restarting Consumer(在cTaskExecutor-4线程下)。

我当前的解决方法是重新启动我的应用程序。任何人都可以阐明这件事吗?

2017-03-20 12:42:38.856 ERROR 24245 --- [24.133.241:5671] o.s.a.r.c.CachingConnectionFactory
      : Channel shutdown: connection error
2017-03-20 12:42:39.642  WARN 24245 --- [cTaskExecutor-4] o.s.a.r.l.SimpleMessageListenerCont
ainer : Consumer raised exception, processing can restart if the connection factory supports
it
...
2017-03-20 12:42:39.642  INFO 24245 --- [cTaskExecutor-4] o.s.a.r.l.SimpleMessageListenerCont
ainer : Restarting Consumer: tags=[{amq.ctag-4CqrRsUP8plDpLQdNcOjDw=21-05060179}], channel=Ca
ched Rabbit Channel: AMQChannel(amqp://[email protected]:5671/,1), conn: Proxy@7ec317
54 Shared Rabbit Connection: SimpleConnection@44bac9ec [delegate=amqp://[email protected]
.241:5671/], acknowledgeMode=NONE local queue size=0

最佳答案

通常,这是由于使用者线程被“塞住”了用户代码中的某处,因此它无法对断开的连接做出反应。

如果您遇到网络问题,则可能是卡在读写套接字上;确保为所有I / O操作设置了超时时间。

下次发生这种情况时,请执行线程转储以查看使用者线程在做什么。

关于java - AMQP channel 关闭,但使用者并非总是重新启动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42979290/

10-10 09:00