Hi Camel Community,

Greetings to you!

Camel version: 3.20.4
Spring Boot version: 2.7.11
JDK: Amazon Corretto 17
Platform: Windows server 2019
IDE: IntelliJ IDEA 2021.3.2 (Community Edition)
Stack Traces & logging output: attached at the end

I have a case that two routes use the same HTTP listening URL but different 
backend, one is mater and another is backup. Normally during the Camel start 
only master route should be started, the backup route should be in stop status. 
When the master route corresponding backend got issue we can manually start the 
backup route and stop the master route.

The problem is that during Camel startup it will try to start all routes and 
failed due to below error:

---
 Application run 
failed","logger_name":"org.springframework.boot.SpringApplication","thread_name":"main","level":"ERROR","level_value":40000,"stack_trace":"org.apache.camel.FailedToStartRouteException:
 Failed to start route SMS_JSON_MsgFlow because of Multiple consumers for the 
same endpoint is not allowed: 
jetty:http://0.0.0.0:7806/esb00/helmjson?httpMethodRestrict=POST&matchOnUriPrefix=true
---

I read the Camel document and seems RoutePolicy[1] could be the solution, so I 
take class ThrottlingInflightRoutePolicy as reference and extend class 
RoutePolicySupport and override method onStart as below, however seems it not 
works. I can see it print the log "stop omni channel interface: " on console 
but the CamelContext still try to start the route and got issue.

Could you kindly advise on this? Thanks in advance!

---
    @Override
    public void onStart(Route route) {
        System.out.println("starting route: " + route.getRouteId());
        boolean startOmniChannel = 
Boolean.parseBoolean(String.valueOf(camelContext.getPropertiesComponent().resolveProperty("start_omni_channel")));
        if (!startOmniChannel) {
            try {
                System.out.println("stop omni channel interface: " + 
route.getRouteId());
                suspendOrStopConsumer(route.getConsumer());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
---

Stack Traces & logging output:
---
{"@timestamp":"2023-08-28T10:58:07.52+08:00","@version":"1","message":"Apache 
Camel 3.20.4 (mini-esb) is 
starting","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:07.62+08:00","@version":"1","message":"Starting 
CamelMainRunController to ensure the main thread keeps 
running","logger_name":"org.apache.camel.spring.boot.CamelSpringBootApplicationListener","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:07.622+08:00","@version":"1","message":"Apache 
Camel (Main) 3.20.4 is 
starting","logger_name":"org.apache.camel.main.MainSupport","thread_name":"CamelMainRunController","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:07.642+08:00","@version":"1","message":"Logging 
initialized @5011ms to 
org.eclipse.jetty.util.log.Slf4jLog","logger_name":"org.eclipse.jetty.util.log","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:08.1+08:00","@version":"1","message":"jetty-9.4.51.v20230217;
 built: 2023-02-17T08:19:37.309Z; git: 
b45c405e4544384de066f814ed42ae3dceacdd49; jvm 
17.0.7+7-LTS","logger_name":"org.eclipse.jetty.server.Server","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:08.53+08:00","@version":"1","message":"Started 
o.e.j.s.ServletContextHandler@4c635edc{/,null,AVAILABLE}","logger_name":"org.eclipse.jetty.server.handler.ContextHandler","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:08.994+08:00","@version":"1","message":"Started 
ServerConnector@3009eed7{HTTP/1.1, 
(http/1.1)}{0.0.0.0:7806}","logger_name":"org.eclipse.jetty.server.AbstractConnector","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:08.994+08:00","@version":"1","message":"Started 
@6363ms","logger_name":"org.eclipse.jetty.server.Server","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.011+08:00","@version":"1","message":"Error 
starting CamelContext (mini-esb) due to exception thrown: Failed to start route 
SMS_JSON_MsgFlow because of Multiple consumers for the same endpoint is not 
allowed: 
jetty:http://0.0.0.0:7806/esb00/helmjson?httpMethodRestrict=POST&matchOnUriPrefix=true","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"ERROR","level_value":40000,"stack_trace":"org.apache.camel.FailedToStartRouteException:
 Failed to start route SMS_JSON_MsgFlow because of Multiple consumers for the 
same endpoint is not allowed: 
jetty:http://0.0.0.0:7806/esb00/helmjson?httpMethodRestrict=POST&matchOnUriPrefix=true\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRouteConsumers(InternalRouteStartupManager.java:357)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartRouteConsumers(InternalRouteStartupManager.java:319)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.safelyStartRouteServices(InternalRouteStartupManager.java:213)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRoutes(InternalRouteStartupManager.java:147)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStartCamel(AbstractCamelContext.java:3434)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStartContext(AbstractCamelContext.java:3103)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStart(AbstractCamelContext.java:3058)\r\n\tat
 
org.apache.camel.spring.boot.SpringBootCamelContext.doStart(SpringBootCamelContext.java:43)\r\n\tat
 
org.apache.camel.support.service.BaseService.start(BaseService.java:119)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2707)\r\n\tat
 
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262)\r\n\tat
 
org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119)\r\n\tat
 
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)\r\n\tat
 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)\r\n\tat
 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)\r\n\tat
 
com.mbfscn.esb.runtime.MiniESBApplication.main(MiniESBApplication.java:16)\r\n"}
{"@timestamp":"2023-08-28T10:58:09.015+08:00","@version":"1","message":"Apache 
Camel 3.20.4 (mini-esb) is shutting down 
(timeout:45s)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.027+08:00","@version":"1","message":"Stopped 
ServerConnector@3009eed7{HTTP/1.1, 
(http/1.1)}{0.0.0.0:7806}","logger_name":"org.eclipse.jetty.server.AbstractConnector","thread_name":"Camel
 (mini-esb) thread #1 - ShutdownTask","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.03+08:00","@version":"1","message":"Stopped 
o.e.j.s.ServletContextHandler@4c635edc{/,null,STOPPED}","logger_name":"org.eclipse.jetty.server.handler.ContextHandler","thread_name":"Camel
 (mini-esb) thread #1 - ShutdownTask","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.037+08:00","@version":"1","message":"Routes 
stopped 
(stopped:5)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.037+08:00","@version":"1","message":"    
Stopped Mini_esb_dynamic_route_controller 
(jetty:http://0.0.0.0:7806/esb06/dynamicRouteController)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.037+08:00","@version":"1","message":"    
Stopped Mini_esb_smtp 
(direct://mini-esb-smtp)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.037+08:00","@version":"1","message":"    
Stopped SMS_JSON_MsgFlow 
(jetty:http://0.0.0.0:7806/esb00/helmjson)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.038+08:00","@version":"1","message":"    
Stopped SMS_XML_MsgFlow 
(jetty:http://0.0.0.0:7806/esb00/helm/)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.038+08:00","@version":"1","message":"    
Stopped HELM_JSON_SMS_MsgFlow 
(jetty:http://0.0.0.0:7806/esb00/helmjson)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.041+08:00","@version":"1","message":"Apache 
Camel 3.20.4 (mini-esb) shutdown in 25ms 
(uptime:1s)","logger_name":"org.apache.camel.impl.engine.AbstractCamelContext","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.048+08:00","@version":"1","message":"\r\n\r\nError
 starting ApplicationContext. To display the conditions report re-run your 
application with 'debug' 
enabled.","logger_name":"org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2023-08-28T10:58:09.218+08:00","@version":"1","message":"Application
 run 
failed","logger_name":"org.springframework.boot.SpringApplication","thread_name":"main","level":"ERROR","level_value":40000,"stack_trace":"org.apache.camel.FailedToStartRouteException:
 Failed to start route SMS_JSON_MsgFlow because of Multiple consumers for the 
same endpoint is not allowed: 
jetty:http://0.0.0.0:7806/esb00/helmjson?httpMethodRestrict=POST&matchOnUriPrefix=true\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRouteConsumers(InternalRouteStartupManager.java:357)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartRouteConsumers(InternalRouteStartupManager.java:319)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.safelyStartRouteServices(InternalRouteStartupManager.java:213)\r\n\tat
 
org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRoutes(InternalRouteStartupManager.java:147)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStartCamel(AbstractCamelContext.java:3434)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStartContext(AbstractCamelContext.java:3103)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.doStart(AbstractCamelContext.java:3058)\r\n\tat
 
org.apache.camel.spring.boot.SpringBootCamelContext.doStart(SpringBootCamelContext.java:43)\r\n\tat
 
org.apache.camel.support.service.BaseService.start(BaseService.java:119)\r\n\tat
 
org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2707)\r\n\tat
 
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262)\r\n\tat
 
org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:119)\r\n\tat
 
org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:151)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)\r\n\tat
 
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940)\r\n\tat
 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)\r\n\tat
 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)\r\n\tat
 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:307)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)\r\n\tat
 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)\r\n\tat
 
com.mbfscn.esb.runtime.MiniESBApplication.main(MiniESBApplication.java:16)\r\n"}
---


References:
[1] https://camel.apache.org/manual/route-policy.html

BRs.
Yainsun
[https://camel.apache.org/_/img/logo-d-f21b25ba38.svg]<https://camel.apache.org/manual/route-policy.html>
RoutePolicy<https://camel.apache.org/manual/route-policy.html>
Camel is an open source integration framework that empowers you to quickly and 
easily integrate various systems consuming or producing data.
camel.apache.org

Reply via email to