Did you try to use an errorHandler? Some like this: from("seda:a") // here we configure the error handler .errorHandler(deadLetterChannel("seda:error")) // and we continue with the routing here .to("seda:b");
Then you can set the errorHandler direct on the route (you can also add redeliveries etc). Also check: https://camel.apache.org/manual/route-configuration.html In het routeConfiguration you can set specific error handler per route. Raymond On Wed, Feb 12, 2025 at 12:00 PM Fabien Arrault < farra...@consulting-for.d-edge.com> wrote: > Hello, > > In our application, we have factored out some common behaviour in a direct: > route called synchronously by other routes > This sub-route needs to handle exception by first making retries ; and > then, when retry are exhausted, by returning **to the caller route** a > default intermediary response. > > Playing around with onException directive on this direct sub-route, I did > not succeed to achieve the last part : > * the retries do work correctly ( with required redelivery policy > directive : maximumRedeliveries in particular ) > * when retries are exhausted the custom exception policy is correctly > executed : it marks the exception as "handled" and set the body on the > exchange with the default intermediary response > * BUT the processing of the exchange completely ends after that : the > parent route didn't continue its processing based on this intermediary > response > * and in the ends the caller of the main route receives an intermediary > response, which is not in the format it expects. > > I know there is doTry/doCatch directives, which would allow to return a > default response without involing errorHandler, but we can't use them here > as we also do need the redelivery behaviour of the default error handler. > > Digging a little into the camel source code, I understand that this > behaviour is caused by the fact that both routes (main route / sub-route) > are sharing the same Exchange when using direct: endpoint, > and that in this case, the error handler of the sub-route flags the > Exchange has errorHandlerHandled which caused BOTH routes to stop their > processing. > > > I didn't succeed to find reference material on this specific behaviour on > direct endpoint. > It seems to me to be a fairly reasonable requirement though. > Is it possible to achieve what we need here ? > > Thanks in advance for your advices > > Regards, > Fabien Arrault > > -- > > > This e-mail, any attachments and the information contained therein ("this > > message") are confidential and intended solely for the use of the > addressee(s). > If you have received this message in error please send it > back to the sender and > delete it. Unauthorized publication, use, > dissemination or disclosure of this > message, either in whole or in part is > strictly prohibited. > > > > > Ce message électronique et tous les fichiers > joints ainsi que les informations contenues dans ce message (ci-après "le > message") sont confidentiels et destinés exclusivement à l'usage de la > personne à laquelle ils sont adressés. Si vous avez reçu ce message par > erreur, merci de le renvoyer à son émetteur et de le détruire. Toute > diffusion, publication, totale ou partielle ou divulgation sous quelque > forme que ce soit non expressément autorisée de ce message, est interdite. >