Hi We can maybe also add on option to error handler to make this general https://issues.apache.org/jira/browse/CAMEL-20744
On Tue, May 7, 2024 at 5:03 PM Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > You can try adding retryWhile to your onException and check if the route > status if its stopping, and then return false to break the retry sooner. > > On Tue, May 7, 2024 at 4:11 PM Speckels, Bert <bert.speck...@btc-ag.com> > wrote: > >> I have created a simple example project which demonstrates the >> different behaviouts of "camel rabbitmq" and "camel spring rabbitmq": >> >> https://github.com/Skrrytch/camel-and-rabbitmq-issue >> This demonstrates both components so you can see the different behaviour. >> See readme.md for details like code description, how to run and reproduce. >> >> ... and the corresponding Stack Overflow entry: >> >> >> https://stackoverflow.com/questions/78443006/impossible-to-stop-a-route-with-inflight-messages-which-are-in-redelivery-when >> >> Maybe someone can help because we need a way to interrupt a redelivery >> by stopping the route for maintenance as well as stop, remove the message >> from queue and restart. >> >> With kind regards >> Bert. >> ________________________________ >> Von: Speckels, Bert <bert.speck...@btc-ag.com> >> Gesendet: Donnerstag, 18. April 2024 18:25 >> An: users@camel.apache.org <users@camel.apache.org> >> Betreff: Stopping a route while in retry (how to interrupt the retry?) >> ... worked great before migration to "camel spring rabbitmq" >> >> Hello everyone. >> >> I hope to get some useful information about our current problem. I'll >> try to keep it brief and still provide enough information. Ask if any >> more information is required. >> >> We migrated our camel routes which receive messages from RabbitMQ to >> "camel spring rabbitmq" (since "camel rabbitmq" has been removed in >> camel 4). >> >> First of all: >> <spring-boot.version>3.2.4</spring-boot.version> >> <camel.version>4.4.0</camel.version> >> <java.version>17</java.version> >> (First we also tried with camel 3.22.1 and spring boot 2.7.18) >> >> Everything worked great after the migration, except for one special case: >> >> For maintenance we sometimes need to STOP the routes (e.g. via JMX): The >> rabbitmq consumers should be stopped and inflight messages remain in >> RabbitMQ, ready to be consumed again after maintenance. >> >> That worked like a charm with "camel rabbitmq component": Even >> when there was a message in (Camel) RETRY for some minutes, that route >> has been stopped >> after the configured timeout of 5 seconds, the retry (Thread.sleep) has >> been >> interrupted and the message in RabbitMQ was ready to be consumed >> again. >> >> But with "camel spring rabbitmq" the message in retry is no longer >> interrupted: It continues to run despite the rabbit consumer being and the >> consuming route has been stopped >> (we can see that in Hawt.io) >> >> I attached two log outputs: The first one with "camel rabbitmq" (where >> you can >> see the interruption of Thread.sleep) and another one with "camel >> spring rabbitmq": As you can see, camel is waiting for the inflight >> message to finish but then forces the route to stop ... but the retry >> thread is still running and tries to redeliver the message (we can see >> the delivery failures while the consumer and route is stopped) >> >> Thanks for reading all this. I hope I made my point clear?! >> >> With kind regards >> Bert >> > > > -- > Claus Ibsen > ----------------- > @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 > -- Claus Ibsen ----------------- @davsclaus Camel in Action 2: https://www.manning.com/ibsen2