Camel仅在启动时发送消息,然后停止

时间:2014-01-06 11:30:03

标签: java apache-camel

我希望这是一个微不足道的问题。我为Apache Camel编写了超短的'程序'来读取context.xml然后按照它说的那样做:

public class CamelBridge {
    public static void main(String[] args) throws Exception {
        ApplicationContext context = new FileSystemXmlApplicationContext("camelContext.xml");        
    }
}

我连接两个JMS队列。该程序有效,但就在我启动它的时候。然后它停止发送消息。如果我重新开始 - 它会再次发送它们。我在这里错过了一些错误吗?

修改

我已更新了我的Main,但它没有帮助:

public class Bridge {

    private Main main;

    public static void main(String[] args) throws Exception {
        Bridge bridge = new Bridge ();
        bridge.boot();
    }

    public void boot() throws Exception{
        main = new Main();
        main.enableHangupSupport(); 
        main.setApplicationContextUri("camelContext.xml");
        main.run();
    }
}

修改2

我想我找到了问题(不是解决方案)。启用跟踪后,我发现错误消息显示为:

jms在id -some id -

的调度程序中找不到对象

经过一些挖掘后,我发现它在远程处理文件中已连接clientLeasePeriod。是否有可能在Camel方面解决这类问题?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果您的app只包含配置Camel上下文的Main和xml文件,那么上下文将被销毁(因此您的路由也会被销毁)。即使不同的上下文在同一JVM上运行JMS实现。谢尔盖链接可以帮到你。

如果你想让它在测试中起作用,可以将while(true)添加为main的最后一行。请注意,这不是最好的方法:)。

答案 2 :(得分:0)

我意识到问题出在安装程序的服务器上。服务器认为它驻留在公共网络上,而不是专用网络(Windows Server 2012)。将网络更改为私有后,该过程正常工作。

注意 - Camel没有对此提出任何错误,因此很难发现。