Events stuck durin processing in Java app +Srping Amqp

Viewed 17

After addded concurrrency to the @RabbitListened faced with problem that sometimes events are stuck in app. When restarting app it's continue works normally. But then could aslo stuck suddenly after sometime.

    @RabbitListener(
        queues = "${app.queue}",
        ackMode = "MANUAL",
        concurrency = 2-5,
        messageConverter = "jsonMessageConverter")
public void consumeEvent(AppEvent event, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
    try {
        .....

        doAck(channel, deliveryTag);
    } catch (Throwable e) {
        .....
        doNack(channel, deliveryTag);
    }
}

   @Bean
public PooledChannelConnectionFactory connectionFactory(){
    ConnectionFactory rabbitConnectionFactory = new ConnectionFactory();
    rabbitConnectionFactory.setHost(host);
    rabbitConnectionFactory.setPort(port);
    rabbitConnectionFactory.setUsername(userName);
    rabbitConnectionFactory.setPassword(password);

    return new PooledChannelConnectionFactory(rabbitConnectionFactory);
}

@Bean
public RabbitTemplate rabbitTemplate(){
    final var rabbitTemplate = new RabbitTemplate(connectionFactory());
    rabbitTemplate.setMessageConverter(getJsonMessageConverter());
    return rabbitTemplate;
}

@Bean("jsonMessageConverter")
public Jackson2JsonMessageConverter getJsonMessageConverter() {
    return new Jackson2JsonMessageConverter();
}

In thread dump there are 3 threads like on picture

0 Answers
Related