apachecamel多个JMS路由
我是骆驼队的新手,我有一个关于路线的问题。在我的apachecamel多个JMS路由,jms,apache-camel,Jms,Apache Camel,我是骆驼队的新手,我有一个关于路线的问题。在我的configure方法中,我有一个-简化-代码: from("file:folder1") .unmarshal().jaxb(BookBean.class.getPackage().getName()) .bean(BeanToEntity.class); from("jms:queue1") .to("file:folder2?fileName=$simple{date:now:yyyyMMddHHmmssSSS}.x
configure
方法中,我有一个-简化-代码:
from("file:folder1")
.unmarshal().jaxb(BookBean.class.getPackage().getName())
.bean(BeanToEntity.class);
from("jms:queue1")
.to("file:folder2?fileName=$simple{date:now:yyyyMMddHHmmssSSS}.xml");
from("file:folder2")
.unmarshal().jaxb(BookBean.class.getPackage().getName())
.bean(BeanToEntity.class);
from("jms:queue2")
.to("file:folder3?fileName=$simple{date:now:yyyyMMddHHmmssSSS}.xml");
from("file:folder3")
.unmarshal().jaxb(BookBean.class.getPackage().getName())
.bean(BeanToEntity.class);
现在,如果folder1中有一些文件,它们会被定期处理,当我将带有xml
正文的消息放入队列2中时,也会发生同样的情况。但是,当我将消息放入队列1时,它不起作用,使用QBrowser,我可以看到该队列上的消息。我尝试定义两个JmsComponent
,每个路由一个,类似于:
cdiCamelContext.addComponent("jms-1", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
cdiCamelContext.addComponent("jms-2", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
但没有结果。我做错了什么
编辑
我简化了我的代码,无论如何我需要两个行为不同的路由。显然,当我将JMS
组件定义为JMS-1
和JMS-2
时,我编写了来自(“JMS-1:queue1”)和来自(“JMS-2:queue2”)的路由,但同样没有结果。
现在,在两个队列中将ConcurrentConsumers
选项设置为10,消息将在这两个队列中传递,但在Glassfish日志中我看到了(GreenQueue和RedQueue是我上面所说的queue1和queue2):
以此类推,直到我停止服务器
我首先尝试使用Glassfish4提供的默认ConnectionFactory,然后使用另一个带有此xml配置文件的ConnectionFactory:
...
并将其注入我的应用程序:
@Resource(lookup = "jms/DurableConnectionFactory")
private ConnectionFactory connectionFactory;
除非需要特定于路由的行为,否则通常会重用JMS组件。如果将JMS组件命名为“JMS-1”,则应该使用该名称。即来自(“jms-1:queue1”)
的。如果日志中没有错误,请打开调试日志并查看发生了什么。它会告诉你很多。使用提供的信息很难给出更好的建议。似乎您在JMS组件配置方面有问题,请添加配置信息。这可能是ConnectionFactory问题吗?我尝试了JAVAEE7教程、DefaultJMSConnectionFactory和DurableConnectionFactory@SergeyJmsComponent JmsComponent=JmsComponent.JmsComponent自动确认(connectionFactory);jmsComponent.setConcurrentConsumers(10);addComponent(“jms”,jmsComponent)代码>首先初始化cdiCamelContext
并注入connectionFactory
,正如我上面所说的。我指的是指定代理、连接工厂等的部分
@Resource(lookup = "jms/DurableConnectionFactory")
private ConnectionFactory connectionFactory;