0

我正在开发我的第一个真正的基于 Camel 的 Java 应用程序,并且遇到了一个奇怪而复杂的问题,我认为这是主 Camel 线程死亡/完成的结果。

基本上,路由本身仅由几个处理器组成,其中一个处理器执行一些需要 20 到 25 秒才能完成的繁重计算。整个应用程序正在终止而没有抛出任何异常/错误/日志语句是任何其他表明出现问题的迹象,并且在执行这些昂贵的计算时正在死亡。

我不是在寻找任何人来诊断我的问题,我只是想要一种强制骆驼路线保持活力的方法,因为我认为正在发生的事情是骆驼主线程正在到达路线的尽头,停止它,并且关闭应用程序。我想强制 Camel 主线程保持活动状态,例如 60 秒,看看我是否至少可以排除它作为一个因素。

如果使用 Java DSL,我只需将以下内容放在路由的末尾:

.to(new Processor() {
    @Override
    public void process(Exchange exchange) {
        try {
            Thread.sleep(60000);
        } catch(Throwable t) {
            // ...
        }
    }
})
.to("direct:endOfRoute");

我正在使用 Spring DSL (XML) - 有什么想法吗?提前致谢!

4

1 回答 1

3

路由完成不会终止您的 Camel 应用程序/上下文,您只需要确保实例化上下文的容器继续运行...

http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

也就是说,对于您的具体问题,您可以使用延迟器 EIP在您的路线中引入显式延迟

于 2013-03-03T05:48:44.520 回答