我想在执行一些逻辑后启动文件读取路由,所以我使用了startupOrder。但一旦camel初始化,文件组件就开始轮询,而无需等待其他路由完成执行。
路线:
<route id="test" startupOrder="1">
<from uri="timer:foo?period=1000&repeatCount=1" />
<bean method="checkLogic" ref="serviceProcessor" />
<route id="readconfigfile" >
<from uri="file:{{config.ConfigPath}}?recursive={{config.ConfigRecursiveRead}}&noop=true&consumer.delay={{config.ConfigFileReadGap}}"/>
<bean method="configRead(${body},'Config')" ref="ConfigReader"/>
请在这里帮忙。
您可以设置路由readconfigfile
到autoStartup=false
<route id="readconfigfile" autoStartup="false">
然后从您的bean serviceProcessor
注入CamelContext
并使用其api启动该路由,例如
camelContext.startRoute("readconfigfile");
当您完成了bean代码,并准备好启动该路由时。
您需要在第二个路由中设置startupOrder=2,如下例所示:
<route startupOrder="1">
<from uri="seda:foo"/>
<to uri="mock:result"/>
</route>
<route startupOrder="2">
<from uri="direct:start"/>
<to uri="seda:foo"/>
</route>