任务完成后,Camel路由关闭

时间:2015-07-09 10:20:44

标签: apache-camel

我有一个批处理作业,我用apache camel实现了。 我不想要一个长时间运行的过程,而是一个纯粹的批处理作业。

目前作为路由的最后一步,我调用了一个执行System.exit()的处理器,并在默认的5分钟超时后关闭了驼峰。

    <route id="dataFetch">
        <from uri="direct:dataFetch"/>
        <split>
            <simple>${body}</simple>
            <to uri="bean:dataFetchProcessor"/>
            <to uri="direct:dataPersist"/>
        </split>
        <to uri="bean:stopAndExitProcessor"/>
        <stop/>
    </route>

这个解决方案适合我,但感觉不确定。 有任何建议如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

我更倾向于使用CamelContext.stop()方法。

以下是如何在处理器中执行此操作的示例:

    @Override
    public void process(Exchange exchange) throws Exception {
        exchange.getContext().stop();
    }

以这种方式停止上下文将允许完成正在进行的消息。如果您的路线仍然消耗并且阻止关闭,您可能需要先停止路线(例如,通过controlbus)。