Apache camel 路由的Camel startupOrder不适用于文件组件

Apache camel 路由的Camel startupOrder不适用于文件组件,apache-camel,Apache Camel,我想在执行一些逻辑之后启动文件读取路由,所以我使用了startupOrder。但一旦camel初始化,文件组件就开始轮询,而不等待其他路由完成执行 路线: <route id="test" startupOrder="1"> <from uri="timer:foo?period=1000&amp;repeatCount=1" /> <bean method="checkLogic" ref="serviceProcessor" />

我想在执行一些逻辑之后启动文件读取路由,所以我使用了startupOrder。但一旦camel初始化,文件组件就开始轮询,而不等待其他路由完成执行

路线:

 <route id="test" startupOrder="1">
    <from uri="timer:foo?period=1000&amp;repeatCount=1" />
    <bean method="checkLogic" ref="serviceProcessor" />



请在此提供帮助。

您需要在第二条路线中设置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>

您可以将路由
readconfigfile
设置为
autoStartup=false

<route id="readconfigfile" autoStartup="false">

当您完成bean代码并准备好启动该路由时。

请参阅controlbus如何从路由启动路由,然后将第二个路由标记为非自动启动。我使用的是2.10版。无法使用controlbus。这不起作用。另外,无序根目录应该只在有序路由执行后启动。不确定这意味着什么不起作用,它直接取自文档。我已经试过了,但一旦camel初始化,文件组件就会开始轮询。我在startupOrder 1中引入了路由延迟,只是为了看看是否只有在第一条路由完成执行后才有其他路由启动,但这并没有发生。在这种情况下,最好看看克劳斯说的话,但这有点困难,因为您使用的是旧版本的xml dsl。至少在java中,您可以引入某种睡眠机制。或者改变你的设计,一旦路线1完成,然后通过发送一些你丢弃的虚拟数据通过“to”触发路线2。我想我将不得不接受克劳斯的建议。谢谢你的帮助。但是为什么startupOrder在这里不起作用呢?文档中没有关于此异常的内容。它是文件读取路由的已知属性还是一个bug,或者它是否有一些我看不到的逻辑解释?Thnx。我使用的是2.17版。
<route id="readconfigfile" autoStartup="false">
camelContext.startRoute("readconfigfile");