Java 驼峰文件:处理所有文件时停止路由

Java 驼峰文件:处理所有文件时停止路由,java,apache-camel,Java,Apache Camel,我有骆驼路线 <routes xmlns="http://camel.apache.org/schema/spring"> <route startupOrder="1"> <from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" /> <unmarshal> <csv delimiter="|" quoteDisable

我有骆驼路线

<routes xmlns="http://camel.apache.org/schema/spring">
   <route startupOrder="1">
    <from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" />
      <unmarshal>
        <csv delimiter="|" quoteDisabled="true" />
    </unmarshal>
    <to uri="bean:csvProcessor?method=processNew" />
</route>

</routes>
它不断地轮询目录

如果此作业触发一次,我想停止轮询

如果所有文件都已处理,则路由应停止

我该怎么做

我在下面试过了

<from uri="timer:foo?repeatCount=1" />
            <pollEnrich>
                <constant>file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data</constant>
            </pollEnrich>
但它仍在不断地投票

注意:我使用的是spring Camel。

您可以订阅在交换完成时调用的回调。你也可以用停车场停车

例如:

<route startupOrder="1" id="myRoute">
    <from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" />
    <onCompletion>
        <to uri="controlbus:route?routeId=myRoute&amp;action=stop"/>
    </onCompletion>
    <unmarshal>
        <csv delimiter="|" quoteDisabled="true" />
    </unmarshal>
    <to uri="bean:csvProcessor?method=processNew" />
</route>
您可以订阅在交换完成时调用的回调。你也可以用停车场停车

例如:

<route startupOrder="1" id="myRoute">
    <from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" />
    <onCompletion>
        <to uri="controlbus:route?routeId=myRoute&amp;action=stop"/>
    </onCompletion>
    <unmarshal>
        <csv delimiter="|" quoteDisabled="true" />
    </unmarshal>
    <to uri="bean:csvProcessor?method=processNew" />
</route>

CamelBatchComplete exchange属性可用于了解轮询是否完成,然后使用getContext停止路由。stopRoute

CamelBatchComplete exchange属性可用于了解轮询是否完成,然后使用getContext停止路由。stopRoute

可避免关机期间出现任何问题,例如,如果轮询另一个文件,一个好的做法是在controlbus uri选项中设置async=true。为了避免关机期间出现任何问题,例如,如果轮询另一个文件,一个好的做法是在controlbus uri选项中设置async=true。