Spring AMQP Consumer神秘地丢弃了与队列

时间:2016-02-23 07:47:48

标签: spring spring-amqp spring-rabbitmq

我们正在使用带有RabbitMQ版本3.5.3的spring-amqp 1.5.2。所有队列都运行良好,我们让消费者在没有任何问题的情况下收听消费者,除了一个不断神秘地断开连接的消费者。 spring-amqp auto恢复,但几个小时后消费者断开连接,再也没有恢复过来。

队列声明为

    @Bean()
public Queue analyzeTransactionsQueue(){
    Map<String, Object> args = new HashMap<>();
    args.put("x-message-ttl", 60000);
    return new Queue("analyze.txns", true, false, false, args);
}

其他队列以类似方式声明,没有问题。

使用者(监听者)被声明为

    @Bean
public SimpleRabbitListenerContainerFactory analyzeTransactionListenerContainerFactory(ConnectionFactory connectionFactory, AsyncTaskExecutor asyncTaskExecutor) {
connectionFactory.getVirtualHost());
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    factory.setConcurrentConsumers(2);
    factory.setMaxConcurrentConsumers(4);
    factory.setTaskExecutor(asyncTaskExecutor);
    ConsumerTagStrategy consumerTagStrategy = new ConsumerTagStrategy() {
        @Override
        public String createConsumerTag(String queue) {
            return queue;
        }
    };
    factory.setConsumerTagStrategy(consumerTagStrategy);
    return factory;
}

同样,其他没有问题的消费者也以类似的方式宣布。

收到邮件后的代码没有例外。即使在为SimpleMessageListenerContainer打开DEBUG日志记录之后,日志中也没有错误。

LogLevel=DEBUG; category=org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; msg=Cancelling Consumer: tags=[{}], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@10.17.1.13:5672/,47), acknowledgeMode=AUTO local queue size=0; 
LogLevel=DEBUG; category=org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; msg=Idle consumer terminating: Consumer: tags=[{}], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@10.17.1.13:5672/,47), acknowledgeMode=AUTO local queue size=0; 

关于为什么会发生这种情况的任何想法。尝试过DEBUG登录,但无济于事。

1 个答案:

答案 0 :(得分:0)

看看你配置事物的方式,很明显你已经启用了动态扩展消费者。

<input type="hidden" name="_token" value="{{ csrf_token() }}" />

有一个线程问题,我提交了一个修复程序,导致消费者数量降至零。这种情况在消费者缩减时发生。

从它的外观来看,你一直是这个问题的受害者。我相信修复程序已被后端移植,可以看到NSAttributedString

尝试使用最新版本,看看是否遇到同样的问题。