AMQP 通道关闭但消费者并不总是重新启动

AMQP Channel shutdown but Consumer not always restart

我在 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://21-05060179@10.24.133.241:5671/,1), conn: Proxy@7ec317
54 Shared Rabbit Connection: SimpleConnection@44bac9ec [delegate=amqp://21-05060179@10.24.133
.241:5671/], acknowledgeMode=NONE local queue size=0

一般来说,这是因为消费者线程在用户代码的某处"stuck",所以它无法对断开的连接做出反应。

如果您遇到网络问题,可能是在读取或写入套接字时卡住了;确保为任何 I/O 操作设置了超时。

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