Hi Jacek, Thanks for the advice! Yes this feature meet my needs.
Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10 From: jacek szymanski<mailto:jacek.p.szyman...@gmail.com> Sent: 2023年8月28日 20:29 To: users@camel.apache.org<mailto:users@camel.apache.org> Subject: Re: How to use RoutePolicy to prevent a route from starting Hi, wouldn't it be enough to disable auto startup on the backup route? https://camel.apache.org/manual/configuring-route-startup-ordering-and-autostartup.html js. On 28.08.2023 9:31, Han Yainsun wrote: > 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<https://camel.apache.org/_/img/logo-d-f21b25ba38.svg%5d%3chttps:/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 >