Hi

When your app is stuck then you can take a thread dump, which can help
pin point to which thread and where its stuck.

Camel uses a separate thread to shutdown routes, while waiting for
that to complete. And after a timeout then Camel will attempt to force
shutdown.
Don't you see any kind of shutdown logging about waiting for routes to
finish and a timeout was hit or something?

On Fri, Jan 29, 2021 at 9:11 AM Michael Martinsen <m...@openminds.dk> wrote:
>
> 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



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to