Hello Camel users I have a problem with some Apache Camel applications (Spring Boot) that are consuming messages from RabbitMQ. I am running these applications as Windows Services (using WinSW).
Sometime when I deploy a new application to the Windows server running the applications, the following exception is logged: 2021-01-28 19:57:24,554 WARN org.apache.camel.component.rabbitmq.RabbitMQConsumer [Camel (camel-1) thread #13 - ShutdownTask] Error occurred while stopping consumer. This exception is ignored java.io.IOException: Unknown consumerTag at com.rabbitmq.client.impl.ChannelN.basicCancel(ChannelN.java:1476) at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.basicCancel(AutorecoveringChannel.java:642) at org.apache.camel.component.rabbitmq.RabbitConsumer.doStop(RabbitConsumer.java:185) at org.apache.camel.support.ServiceSupport.stop(ServiceSupport.java:119) at org.apache.camel.util.ServiceHelper.stopService(ServiceHelper.java:142) at org.apache.camel.util.ServiceHelper.stopAndShutdownService(ServiceHelper.java:205) at org.apache.camel.component.rabbitmq.RabbitMQConsumer.closeConnectionAndChannel(RabbitMQConsumer.java:146) at org.apache.camel.component.rabbitmq.RabbitMQConsumer.doSuspend(RabbitMQConsumer.java:161) at org.apache.camel.support.ServiceSupport.suspend(ServiceSupport.java:145) at org.apache.camel.util.ServiceHelper.suspendService(ServiceHelper.java:388) at org.apache.camel.impl.DefaultShutdownStrategy.suspendNow(DefaultShutdownStrategy.java:401) at org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask.run(DefaultShutdownStrategy.java:572) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:830) 2021-01-28 19:57:24,981 INFO org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask [Camel (camel-1) thread #13 - ShutdownTask] Route: XXX complete, was consuming from: rabbitmq://?declare=false&networkRecoveryInterval=30000&queue=test.queue 2021-01-28 19:57:24,981 INFO org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask [Camel (camel-1) thread #13 - ShutdownTask] Route: XXX shutdown complete, was consuming from: seda://dlq 2021-01-28 19:57:24,981 INFO org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask [Camel (camel-1) thread #13 - ShutdownTask] Route: XXX shutdown complete, was consuming from: direct://YYY 2021-01-28 19:57:24,981 INFO org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask [Camel (camel-1) thread #13 - ShutdownTask] Route: XXX shutdown complete, was consuming from: file://YYY 2021-01-28 19:57:24,981 INFO org.apache.camel.impl.DefaultShutdownStrategy [RMI TCP Connection(2)-10.0.3.117] Graceful shutdown of 4 routes completed in 0 seconds 2021-01-28 19:57:24,996 INFO org.apache.camel.impl.DefaultCamelContext [RMI TCP Connection(2)-10.0.3.117] Apache Camel 2.25.2 (CamelContext: camel-1) uptime 7 days 17 hours 2021-01-28 19:57:24,996 INFO org.apache.camel.impl.DefaultCamelContext [RMI TCP Connection(2)-10.0.3.117] Apache Camel 2.25.2 (CamelContext: camel-1) is shutdown in 0.442 seconds 2021-01-28 19:57:25,076 INFO org.springframework.scheduling.concurrent.ExecutorConfigurationSupport [RMI TCP Connection(2)-10.0.3.117] Shutting down ExecutorService 'applicationTaskExecutor' And that's it. Although the exception is only a warning and it states that it's ignored, nothing more happens. The Windows Service does not stop and it's stuck in state "Stopping".. Either the entire Windows server has to be restarted or some manual actions have to be taken to stop the Windows Service. So I am really not sure where to look for a problem - if this is in Apache Camel / Spring Boot / RabbitMQ / WinSW... I found this: https://github.com/spring-projects/spring-amqp/issues/1113 But that relates to the Spring AMQP component which I am not using (directly). I am using the Spring Boot Camel RabbitMQ Starter. I noticed someone writing that this happens when the Camel app is stopped BEFORE it has read any messages from the RabbitMQ server. That's not what I am seeing - I have seen this in production environments several times where the Camel apps have been running for months and HAVE consumed messages. But I am not sure if this is caused by the RabbitMQ server being retarted while the Camel apps are running... Any help is most welcome. More details about my setup: Spring Boot App 2.3.5.RELEASE Apache Camel RabbitMQ Starter: org.apache.camel camel-rabbitmq-starter 2.25.2 Configured only from applications.properties using: camel.component.rabbitmq.hostname=... camel.component.rabbitmq.port-number=... camel.component.rabbitmq.username=... camel.component.rabbitmq.password=... Using WinWS for Windows Service WinSW 2.2.0.0 (I know there is a newer version 2.10.3 available, but I doubt this is the problem) Cheers Michael