我想在执行一些逻辑后启动文件读取路由,所以我使用了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"/>
请在这里帮忙。
答案 0 :(得分:0)
您需要在第二条路线中设置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>
答案 1 :(得分:0)
您可以将路线readconfigfile
设置为autoStartup=false
<route id="readconfigfile" autoStartup="false">
...然后从您的bean serviceProcessor
然后注入CamelContext
并使用其api启动该路由,例如
camelContext.startRoute("readconfigfile");
完成bean代码后,准备启动该路由。