Rabbitmq RabbitListener停止处理消息,有时会卡住

Rabbitmq RabbitListener停止处理消息,有时会卡住,rabbitmq,spring-amqp,spring-rabbit,Rabbitmq,Spring Amqp,Spring Rabbit,环境:Spring boot 1.4.0,RMQ客户端:4.0.1,CloudFoundry 我的应用程序具有以下简单的rmq conn工厂定义 @Bean public ConnectionFactory connectionFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setU

环境:Spring boot 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端点)。这种情况随时都会发生,所以当我注意到日志将被滚动(如果有的话)时,因为其他流量(如耦合简单rest端点)会被不时调用。这告诉我应用程序本身已经启动了,但这个侦听器部分有点卡住或挂起。我确实搜索了这个问题,有一些问题,但修复了很久以前。(我不想去拉模特儿:))

请告知我应该如何对此进行故障排除。当我重新启动应用程序并且它工作正常时,我必须再次等待以查看此问题。

有一个问题

4.0.x客户端库现在默认启用此功能,但Spring AMQP不需要它;它一直有自己的恢复逻辑

它在1.6.8和1.7.1中是固定的(boot 1.4.0默认附带1.6.1)。开机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 amqp不需要自动恢复..它将如何处理恢复…如果它以某种方式进行恢复,我们可以关闭自动恢复。spring amqp一直有自己的恢复机制,因为第一天-客户端库中的自动恢复相对较新;Spring AMQP通常会恢复得更快(在生产方),在消费方也会在相似的时间内恢复。