RabbitListener 停止处理消息,有时会卡住
RabbitListener stops processing messages and kind of stuck sometimes
环境:Spring 启动 1.4.0,RMQ 客户端:4.0.1,CloudFoundry
我的应用程序具有以下简单的 rmq conn 工厂定义
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setUsername(user);
connectionFactory.setPassword(password);
connectionFactory.setHost(host);
connectionFactory.setPort(port);
return connectionFactory;
}
以及使用@RabbitListener 注释的简单侦听器方法。它工作正常。最近我注意到有几次即使队列中有 5k 条消息也没有处理。在 RMQ 管理控制台上,我看到它也有消费者。我试图获取线程转储但没有发现任何有趣的东西。有什么特别需要我查看线程转储的吗(我有 /dump 端点)。这种情况随时都会发生,所以到那时我会注意到日志将滚动(如果有的话),因为其他流量(如几个简单的休息端点)会不时被调用。所以这告诉我应用程序本身已启动,但只是这个侦听器部分有点卡住或挂起。我确实搜索过这个问题,这有一些问题,但很久以前就解决了。 (我不想去拉模型请:))
请告知我应该如何解决这个问题。我现在必须再次等待才能看到这个问题,因为我重新启动了应用程序并且它工作正常。
有个known problem when the underlying rabbitmq connection factory has autoRecoveryEnabled
set to true.
4.0.x 客户端库现在默认启用此功能,但 Spring AMQP 不需要它;它一直有自己的恢复逻辑。
在1.6.8和1.7.1中修复(boot 1.4.0默认自带1.6.1)。 Boot 1.4.5 自带 1.6.8.
1.7.1 还禁用了 4.0.x 客户端中的选项(除非您专门提供 rabbitmq 连接工厂)。
Boot 1.5.2 默认带有 1.7.1。
选项:
- 升级到更新的启动
- 升级到更新的 spring-amqp 和 spring-rabbit jar
- 关闭底层连接工厂中的自动恢复。
环境:Spring 启动 1.4.0,RMQ 客户端:4.0.1,CloudFoundry
我的应用程序具有以下简单的 rmq conn 工厂定义
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setUsername(user);
connectionFactory.setPassword(password);
connectionFactory.setHost(host);
connectionFactory.setPort(port);
return connectionFactory;
}
以及使用@RabbitListener 注释的简单侦听器方法。它工作正常。最近我注意到有几次即使队列中有 5k 条消息也没有处理。在 RMQ 管理控制台上,我看到它也有消费者。我试图获取线程转储但没有发现任何有趣的东西。有什么特别需要我查看线程转储的吗(我有 /dump 端点)。这种情况随时都会发生,所以到那时我会注意到日志将滚动(如果有的话),因为其他流量(如几个简单的休息端点)会不时被调用。所以这告诉我应用程序本身已启动,但只是这个侦听器部分有点卡住或挂起。我确实搜索过这个问题,这有一些问题,但很久以前就解决了。 (我不想去拉模型请:))
请告知我应该如何解决这个问题。我现在必须再次等待才能看到这个问题,因为我重新启动了应用程序并且它工作正常。
有个known problem when the underlying rabbitmq connection factory has autoRecoveryEnabled
set to true.
4.0.x 客户端库现在默认启用此功能,但 Spring AMQP 不需要它;它一直有自己的恢复逻辑。
在1.6.8和1.7.1中修复(boot 1.4.0默认自带1.6.1)。 Boot 1.4.5 自带 1.6.8.
1.7.1 还禁用了 4.0.x 客户端中的选项(除非您专门提供 rabbitmq 连接工厂)。
Boot 1.5.2 默认带有 1.7.1。
选项:
- 升级到更新的启动
- 升级到更新的 spring-amqp 和 spring-rabbit jar
- 关闭底层连接工厂中的自动恢复。