Lena Leontieva
Lena Leontieva

Reputation: 11

Can't handle InterruptedException in onException routes

I'm trying to handle InterruptedException which I generate in my route.

onException(InterruptedException.class)
                .log("log InterruptedException")
                .handled(true);

onException(RuntimeCamelException.class)
                .log("log RuntimeCamelException")
                .handled(true);

onException(Exception.class)
                .log("log Exception")
                .handled(true);

from("activemq:queue:QUEUE")
                .routeId("STARTROUTE")
                .throwException(InterruptedException.class, "MyTestExceptionMessage");

But I can't catch the exception in onException routes. I can see this WARN in the logs for 7 times and that's it. (Camel tries to process an AMQ message for 7 times if it wasn't handle).

2024-04-12T12:20:50.610 | WARN | Camel (OPENAPI) thread #2 - JmsConsumer[OPENAPI.REQ] | org.apache.camel.component.jms.EndpointMessageListener | Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.InterruptedException: MyTestExceptionMessage] | exception_message: java.lang.InterruptedException: MyTestExceptionMessage | exception_stacktrace: org.apache.camel.RuntimeCamelException: java.lang.InterruptedException: MyTestExceptionMessage
                at org.apache.camel.RuntimeCamelException.wrapRuntimeCamelException(RuntimeCamelException.java:51)
                at org.apache.camel.component.jms.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:217)
                at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:136)
                at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:736)
                at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:696)
                at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:674)
                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:331)
                at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246)
                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1237)
                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1227)
                at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1120)
                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:829)
Caused by: java.lang.InterruptedException: MyTestExceptionMessage
                at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
                at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
                at org.apache.camel.processor.ThrowExceptionProcessor.process(ThrowExceptionProcessor.java:66)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:829)
                at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:737)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:193)
                at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:185)
                at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
                at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
                at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
                at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:132)
... 11 more

How can I catch InterruptedException in camel routes?

Upvotes: 0

Views: 40

Answers (0)

Related Questions