我希望这是一个微不足道的问题。我为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方面解决这类问题?
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您的app只包含配置Camel上下文的Main和xml文件,那么上下文将被销毁(因此您的路由也会被销毁)。即使不同的上下文在同一JVM上运行JMS实现。谢尔盖链接可以帮到你。
如果你想让它在测试中起作用,可以将while(true)添加为main的最后一行。请注意,这不是最好的方法:)。
答案 2 :(得分:0)
我意识到问题出在安装程序的服务器上。服务器认为它驻留在公共网络上,而不是专用网络(Windows Server 2012)。将网络更改为私有后,该过程正常工作。
注意 - Camel没有对此提出任何错误,因此很难发现。