You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Pasquale Congiusti <pa...@gmail.com> on 2024/02/02 10:07:38 UTC

How to make Camel cloud cron "friendly"

Hi folks,
I'm working lately on some experiment to run a generic Camel application on
a Kubernetes CronJob. The behavior expected by the cluster is that, once
the job workload is over, the application would exit with either a success
or error code. As we're running a Camel application, although the route may
have finished, the entire application will continue to run until a forceful
shutdown. I am not sure it exists any other way, so I found my way to
workaround this behavior by following the approach in [1], which would ends
up in something like the following code:

public class TestCron extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("timer:cron?delay=0&period=1&repeatCount=1")
        // Simulate heavylift work
        .delay(10000)
        .to("log:info")
        .log("DONE!")
        .process(new Processor() {
            Thread stop;
            @Override
            public void process(final Exchange exchange) throws Exception {
                if (stop == null) {
                    stop = new Thread() {
                        @Override
                        public void run() {
                            try {
                                exchange.getContext().stop();
                            } catch (Exception e) {
                                // ignore
                            }
                        }
                    };
                }
                // start the thread that stops the context
                stop.start();
            }
        });
    }
}

However, this workaround feels a bit too hacky as it involves playing with
Camel Context directly. It is also impossible to reproduce easily in non
Java DSL, like in YAML. I am wondering if we can think on having a higher
level EIP such we have with "stop", something like "shutdown" which
behavior may be similar of what described above, taking care to gracefully
shutdown the application when it is invoked. This one may do some finer
grained controls to verify that the exchanges has really completed or there
are no others routes running or any other low level check that would
perform a controlled shutdown. How does it sound? or which would be any
alternative to make Camel more cloud cron "friendly"?

Regards,
Pasquale.

[1]
https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html#HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute

Re: How to make Camel cloud cron "friendly"

Posted by Luca Burgazzoli <lb...@gmail.com>.
We have a camel-k-runtime module [1] to support camel-k to automatically
create a Kubernetes CronJob which does something similar.
There is also the camel.main.durationMaxMessages option on camel-main [2]
that can be configure to shut down the context after a bumber of messages
so if configured to 1 and assuming that the first exchange is only a
trigger, then it should be enough to achieve the goal (if not, we cna add
additional options to make camel-main taking care of shutting down the
context according to some rules).

[1] https://github.com/apache/camel-k-runtime/tree/main/camel-k-cron
[2] https://camel.apache.org/components/4.0.x/others/main.html

---
Luca Burgazzoli


On Fri, Feb 2, 2024 at 11:38 AM Pasquale Congiusti <
pasquale.congiusti@gmail.com> wrote:

>
>
> On Fri, Feb 2, 2024 at 11:17 AM Maarten Donderwinkel
> <ma...@aiden.eu.invalid> wrote:
>
>> We run a couple of Camel applications that utilize a K8S Cronjob.
>>
>>
>>
>> For our case we can auto shutdown the application with the property
>> camel.main.durationMaxIdleSeconds.
>>
>> It’ll shutdown if the application is idle for a number of seconds.
>>
>> Your use-case and desired ‘trigger’ might be different of course, but
>> there are more options to auto shutdown
>>
>>
>>
>> See https://camel.apache.org/components/4.0.x/others/main.html for more
>> information on that property and how to set it.
>>
>
> Thanks Maarten, it could be an interesting approach. Wasn't aware of those
> configuration. I'll experiment with them as well.
>
>
>>
>>
>> Met vriendelijke groet | Kind Regards | Meilleures salutations | Mit
>> freundlichen Grüβen,
>>
>> Maarten Donderwinkel
>>
>> Aiden Locatie Den Bosch [image: Email] maarten.donderwinkel@aiden.eu
>> www.aiden.eu
>> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>  Het
>> Zuiderkruis 61
>> 5215 MV 's-Hertogenbosch
>>  +31 (0) 88 060 5111
>>
>>  +31 (0) 6 8683 0832
>>
>> [image: facebook.png] <https://www.facebook.com/weareAiden.eu> [image:
>> linkedin.png] <https://www.linkedin.com/company/aiden-eu> [image:
>> Twitter] <https://twitter.com/weareAiden> [image: youtube]
>> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
>> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
>> <https://www.aiden.eu/>
>> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>
>> <https://www.twitter.com/user_name_here>
>> <https://www.youtube.com/user/user_name_here>
>>
>>
>> *From: *Pasquale Congiusti <pa...@gmail.com>
>> *Date: *Friday, 2 February 2024 at 11:08
>> *To: *dev <de...@camel.apache.org>, users@camel.apache.org <
>> users@camel.apache.org>
>> *Subject: *How to make Camel cloud cron "friendly"
>>
>> Hi folks,
>> I'm working lately on some experiment to run a generic Camel application
>> on
>> a Kubernetes CronJob. The behavior expected by the cluster is that, once
>> the job workload is over, the application would exit with either a success
>> or error code. As we're running a Camel application, although the route
>> may
>> have finished, the entire application will continue to run until a
>> forceful
>> shutdown. I am not sure it exists any other way, so I found my way to
>> workaround this behavior by following the approach in [1], which would
>> ends
>> up in something like the following code:
>>
>> public class TestCron extends RouteBuilder {
>>     @Override
>>     public void configure() throws Exception {
>>         from("timer:cron?delay=0&period=1&repeatCount=1")
>>         // Simulate heavylift work
>>         .delay(10000)
>>         .to("log:info")
>>         .log("DONE!")
>>         .process(new Processor() {
>>             Thread stop;
>>             @Override
>>             public void process(final Exchange exchange) throws Exception
>> {
>>                 if (stop == null) {
>>                     stop = new Thread() {
>>                         @Override
>>                         public void run() {
>>                             try {
>>                                 exchange.getContext().stop();
>>                             } catch (Exception e) {
>>                                 // ignore
>>                             }
>>                         }
>>                     };
>>                 }
>>                 // start the thread that stops the context
>>                 stop.start();
>>             }
>>         });
>>     }
>> }
>>
>> However, this workaround feels a bit too hacky as it involves playing with
>> Camel Context directly. It is also impossible to reproduce easily in non
>> Java DSL, like in YAML. I am wondering if we can think on having a higher
>> level EIP such we have with "stop", something like "shutdown" which
>> behavior may be similar of what described above, taking care to gracefully
>> shutdown the application when it is invoked. This one may do some finer
>> grained controls to verify that the exchanges has really completed or
>> there
>> are no others routes running or any other low level check that would
>> perform a controlled shutdown. How does it sound? or which would be any
>> alternative to make Camel more cloud cron "friendly"?
>>
>> Regards,
>> Pasquale.
>>
>> [1]
>>
>> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcamel.apache.org%2Fmanual%2Ffaq%2Fhow-can-i-stop-a-route-from-a-route.html%23HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute&data=05%7C02%7Cmaarten.donderwinkel%40aiden.eu%7C9549aaebd583438beb6608dc23d6d5dc%7Cb9d83e0e2e894f4e9c2bbe3df185e1af%7C0%7C0%7C638424652819450381%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=Gbf%2F8vAkywA7et%2FBR12uqs1OqTNFeP7Saaqm6jJHCzg%3D&reserved=0
>> <https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html#HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute>
>>
>

Re: How to make Camel cloud cron "friendly"

Posted by Pasquale Congiusti <pa...@gmail.com>.
On Fri, Feb 2, 2024 at 11:17 AM Maarten Donderwinkel
<ma...@aiden.eu.invalid> wrote:

> We run a couple of Camel applications that utilize a K8S Cronjob.
>
>
>
> For our case we can auto shutdown the application with the property
> camel.main.durationMaxIdleSeconds.
>
> It’ll shutdown if the application is idle for a number of seconds.
>
> Your use-case and desired ‘trigger’ might be different of course, but
> there are more options to auto shutdown
>
>
>
> See https://camel.apache.org/components/4.0.x/others/main.html for more
> information on that property and how to set it.
>

Thanks Maarten, it could be an interesting approach. Wasn't aware of those
configuration. I'll experiment with them as well.


>
>
> Met vriendelijke groet | Kind Regards | Meilleures salutations | Mit
> freundlichen Grüβen,
>
> Maarten Donderwinkel
>
> Aiden Locatie Den Bosch [image: Email] maarten.donderwinkel@aiden.eu
> www.aiden.eu
> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>  Het
> Zuiderkruis 61
> 5215 MV 's-Hertogenbosch
>  +31 (0) 88 060 5111
>
>  +31 (0) 6 8683 0832
>
> [image: facebook.png] <https://www.facebook.com/weareAiden.eu> [image:
> linkedin.png] <https://www.linkedin.com/company/aiden-eu> [image: Twitter]
> <https://twitter.com/weareAiden> [image: youtube]
> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
> <https://www.aiden.eu/>
> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>
> <https://www.twitter.com/user_name_here>
> <https://www.youtube.com/user/user_name_here>
>
>
> *From: *Pasquale Congiusti <pa...@gmail.com>
> *Date: *Friday, 2 February 2024 at 11:08
> *To: *dev <de...@camel.apache.org>, users@camel.apache.org <
> users@camel.apache.org>
> *Subject: *How to make Camel cloud cron "friendly"
>
> Hi folks,
> I'm working lately on some experiment to run a generic Camel application on
> a Kubernetes CronJob. The behavior expected by the cluster is that, once
> the job workload is over, the application would exit with either a success
> or error code. As we're running a Camel application, although the route may
> have finished, the entire application will continue to run until a forceful
> shutdown. I am not sure it exists any other way, so I found my way to
> workaround this behavior by following the approach in [1], which would ends
> up in something like the following code:
>
> public class TestCron extends RouteBuilder {
>     @Override
>     public void configure() throws Exception {
>         from("timer:cron?delay=0&period=1&repeatCount=1")
>         // Simulate heavylift work
>         .delay(10000)
>         .to("log:info")
>         .log("DONE!")
>         .process(new Processor() {
>             Thread stop;
>             @Override
>             public void process(final Exchange exchange) throws Exception {
>                 if (stop == null) {
>                     stop = new Thread() {
>                         @Override
>                         public void run() {
>                             try {
>                                 exchange.getContext().stop();
>                             } catch (Exception e) {
>                                 // ignore
>                             }
>                         }
>                     };
>                 }
>                 // start the thread that stops the context
>                 stop.start();
>             }
>         });
>     }
> }
>
> However, this workaround feels a bit too hacky as it involves playing with
> Camel Context directly. It is also impossible to reproduce easily in non
> Java DSL, like in YAML. I am wondering if we can think on having a higher
> level EIP such we have with "stop", something like "shutdown" which
> behavior may be similar of what described above, taking care to gracefully
> shutdown the application when it is invoked. This one may do some finer
> grained controls to verify that the exchanges has really completed or there
> are no others routes running or any other low level check that would
> perform a controlled shutdown. How does it sound? or which would be any
> alternative to make Camel more cloud cron "friendly"?
>
> Regards,
> Pasquale.
>
> [1]
>
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcamel.apache.org%2Fmanual%2Ffaq%2Fhow-can-i-stop-a-route-from-a-route.html%23HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute&data=05%7C02%7Cmaarten.donderwinkel%40aiden.eu%7C9549aaebd583438beb6608dc23d6d5dc%7Cb9d83e0e2e894f4e9c2bbe3df185e1af%7C0%7C0%7C638424652819450381%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=Gbf%2F8vAkywA7et%2FBR12uqs1OqTNFeP7Saaqm6jJHCzg%3D&reserved=0
> <https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html#HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute>
>

Re: How to make Camel cloud cron "friendly"

Posted by Pasquale Congiusti <pa...@gmail.com>.
On Fri, Feb 2, 2024 at 11:17 AM Maarten Donderwinkel
<ma...@aiden.eu.invalid> wrote:

> We run a couple of Camel applications that utilize a K8S Cronjob.
>
>
>
> For our case we can auto shutdown the application with the property
> camel.main.durationMaxIdleSeconds.
>
> It’ll shutdown if the application is idle for a number of seconds.
>
> Your use-case and desired ‘trigger’ might be different of course, but
> there are more options to auto shutdown
>
>
>
> See https://camel.apache.org/components/4.0.x/others/main.html for more
> information on that property and how to set it.
>

Thanks Maarten, it could be an interesting approach. Wasn't aware of those
configuration. I'll experiment with them as well.


>
>
> Met vriendelijke groet | Kind Regards | Meilleures salutations | Mit
> freundlichen Grüβen,
>
> Maarten Donderwinkel
>
> Aiden Locatie Den Bosch [image: Email] maarten.donderwinkel@aiden.eu
> www.aiden.eu
> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>  Het
> Zuiderkruis 61
> 5215 MV 's-Hertogenbosch
>  +31 (0) 88 060 5111
>
>  +31 (0) 6 8683 0832
>
> [image: facebook.png] <https://www.facebook.com/weareAiden.eu> [image:
> linkedin.png] <https://www.linkedin.com/company/aiden-eu> [image: Twitter]
> <https://twitter.com/weareAiden> [image: youtube]
> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>
> <https://www.aiden.eu/>
> <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>
> <https://www.twitter.com/user_name_here>
> <https://www.youtube.com/user/user_name_here>
>
>
> *From: *Pasquale Congiusti <pa...@gmail.com>
> *Date: *Friday, 2 February 2024 at 11:08
> *To: *dev <de...@camel.apache.org>, users@camel.apache.org <
> users@camel.apache.org>
> *Subject: *How to make Camel cloud cron "friendly"
>
> Hi folks,
> I'm working lately on some experiment to run a generic Camel application on
> a Kubernetes CronJob. The behavior expected by the cluster is that, once
> the job workload is over, the application would exit with either a success
> or error code. As we're running a Camel application, although the route may
> have finished, the entire application will continue to run until a forceful
> shutdown. I am not sure it exists any other way, so I found my way to
> workaround this behavior by following the approach in [1], which would ends
> up in something like the following code:
>
> public class TestCron extends RouteBuilder {
>     @Override
>     public void configure() throws Exception {
>         from("timer:cron?delay=0&period=1&repeatCount=1")
>         // Simulate heavylift work
>         .delay(10000)
>         .to("log:info")
>         .log("DONE!")
>         .process(new Processor() {
>             Thread stop;
>             @Override
>             public void process(final Exchange exchange) throws Exception {
>                 if (stop == null) {
>                     stop = new Thread() {
>                         @Override
>                         public void run() {
>                             try {
>                                 exchange.getContext().stop();
>                             } catch (Exception e) {
>                                 // ignore
>                             }
>                         }
>                     };
>                 }
>                 // start the thread that stops the context
>                 stop.start();
>             }
>         });
>     }
> }
>
> However, this workaround feels a bit too hacky as it involves playing with
> Camel Context directly. It is also impossible to reproduce easily in non
> Java DSL, like in YAML. I am wondering if we can think on having a higher
> level EIP such we have with "stop", something like "shutdown" which
> behavior may be similar of what described above, taking care to gracefully
> shutdown the application when it is invoked. This one may do some finer
> grained controls to verify that the exchanges has really completed or there
> are no others routes running or any other low level check that would
> perform a controlled shutdown. How does it sound? or which would be any
> alternative to make Camel more cloud cron "friendly"?
>
> Regards,
> Pasquale.
>
> [1]
>
> https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcamel.apache.org%2Fmanual%2Ffaq%2Fhow-can-i-stop-a-route-from-a-route.html%23HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute&data=05%7C02%7Cmaarten.donderwinkel%40aiden.eu%7C9549aaebd583438beb6608dc23d6d5dc%7Cb9d83e0e2e894f4e9c2bbe3df185e1af%7C0%7C0%7C638424652819450381%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=Gbf%2F8vAkywA7et%2FBR12uqs1OqTNFeP7Saaqm6jJHCzg%3D&reserved=0
> <https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html#HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute>
>

Re: How to make Camel cloud cron "friendly"

Posted by Maarten Donderwinkel <ma...@aiden.eu.INVALID>.
We run a couple of Camel applications that utilize a K8S Cronjob.

For our case we can auto shutdown the application with the property camel.main.durationMaxIdle​Seconds.
It’ll shutdown if the application is idle for a number of seconds.
Your use-case and desired ‘trigger’ might be different of course, but there are more options to auto shutdown

See https://camel.apache.org/components/4.0.x/others/main.html for more information on that property and how to set it.


Met vriendelijke groet | Kind Regards | Meilleures salutations | Mit freundlichen Grüβen,

Maarten Donderwinkel

Aiden   Locatie Den Bosch       [cid:emailicon_498cc08f-aea4-476e-9f95-88392d8cb8b5.png]  maarten.donderwinkel@aiden.eu

www.aiden.eu<https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>     Het Zuiderkruis 61
5215 MV 's-Hertogenbosch
        [data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAMAAABhTZc9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAzUExURQAAAEBQgDhQeDpQejxQeDlTeTpSeDtSeTpSeDtSeTtSejxSeTtReTtTeTtSeTtSeTtSeaJ0QfYAAAAQdFJOUwAQIDBAUGBwgI+fr7/P3+8jGoKKAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAoUlEQVQ4T6WSWw7DIAwE7VACtDRw/9MW7C1Kw0OKOl+wI0C2ob9hb7AaYXPesexgT26uXznOdbl2oUsOvSE5I7bqxEjO1JtFj44Sq00P7C88xXrsrmxi06xdenim+VhqI3aqURV0V7c+rZpT19TYtCHf9Zzf0O6IC10Y6TLnL6KvnQ2Qqh3Sxg4pA+3nadrjAckvVkuLo59QYevD8IvdgegD6EkL94fs/OQAAAAASUVORK5CYII=]  +31 (0) 88 060 5111

        [data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAMAAABhTZc9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAhUExURQAAAEBQgDpSeDtSeTpSeDtSejtReTtTeTtSeTtSeTtSeSPg/l8AAAAKdFJOUwAQYHCAn7/P3+9H8icYAAAACXBIWXMAABcRAAAXEQHKJvM/AAAATElEQVQ4T+3Myw6AMAhE0Skgtf7/B6vpNGVBfOx7VmRuAj5Rj5Tr4MelmVq7D+c69CoiNa/7lNTCCyirrhq81TolNfpXjU+7jesT4AQwOwYrLtoZpwAAAABJRU5ErkJggg==]  +31 (0) 6 8683 0832


[cid:facebook_43dc8f68-d5b5-4f05-b59e-68d4c99a02f6.png]<https://www.facebook.com/weareAiden.eu> [cid:linkedin_c3970408-fac3-4d9f-b67d-63f18181e285.png] <https://www.linkedin.com/company/aiden-eu>  [cid:logotwitternew_e20f77cf-b70d-40b8-8707-b0f0957fecc0.png] <https://twitter.com/weareAiden>  [cid:youtubecopy_93f31478-04ca-4111-885f-c04609258961.png] <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA> <https://www.youtube.com/channel/UCcLccRfot11DrZLNhlAS8fA>    <https://www.aiden.eu/> [cid:aidenlogowithstrapline_royalblue_cmyk_9d2ff840-c0a7-46c9-b176-e08fc6dd5956.png] <https://www.aiden.eu/?utm_source=aidenemailsignature&utm_medium=email>  <https://www.twitter.com/user_name_here>   <https://www.youtube.com/user/user_name_here>



From: Pasquale Congiusti <pa...@gmail.com>
Date: Friday, 2 February 2024 at 11:08
To: dev <de...@camel.apache.org>, users@camel.apache.org <us...@camel.apache.org>
Subject: How to make Camel cloud cron "friendly"
Hi folks,
I'm working lately on some experiment to run a generic Camel application on
a Kubernetes CronJob. The behavior expected by the cluster is that, once
the job workload is over, the application would exit with either a success
or error code. As we're running a Camel application, although the route may
have finished, the entire application will continue to run until a forceful
shutdown. I am not sure it exists any other way, so I found my way to
workaround this behavior by following the approach in [1], which would ends
up in something like the following code:

public class TestCron extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("timer:cron?delay=0&period=1&repeatCount=1")
        // Simulate heavylift work
        .delay(10000)
        .to("log:info")
        .log("DONE!")
        .process(new Processor() {
            Thread stop;
            @Override
            public void process(final Exchange exchange) throws Exception {
                if (stop == null) {
                    stop = new Thread() {
                        @Override
                        public void run() {
                            try {
                                exchange.getContext().stop();
                            } catch (Exception e) {
                                // ignore
                            }
                        }
                    };
                }
                // start the thread that stops the context
                stop.start();
            }
        });
    }
}

However, this workaround feels a bit too hacky as it involves playing with
Camel Context directly. It is also impossible to reproduce easily in non
Java DSL, like in YAML. I am wondering if we can think on having a higher
level EIP such we have with "stop", something like "shutdown" which
behavior may be similar of what described above, taking care to gracefully
shutdown the application when it is invoked. This one may do some finer
grained controls to verify that the exchanges has really completed or there
are no others routes running or any other low level check that would
perform a controlled shutdown. How does it sound? or which would be any
alternative to make Camel more cloud cron "friendly"?

Regards,
Pasquale.

[1]
https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcamel.apache.org%2Fmanual%2Ffaq%2Fhow-can-i-stop-a-route-from-a-route.html%23HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute&data=05%7C02%7Cmaarten.donderwinkel%40aiden.eu%7C9549aaebd583438beb6608dc23d6d5dc%7Cb9d83e0e2e894f4e9c2bbe3df185e1af%7C0%7C0%7C638424652819450381%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=Gbf%2F8vAkywA7et%2FBR12uqs1OqTNFeP7Saaqm6jJHCzg%3D&reserved=0<https://camel.apache.org/manual/faq/how-can-i-stop-a-route-from-a-route.html#HowcanIstoparoutefromaroute-Usingathreadtostoparoutefromaroute>