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@Sergey
JmsComponent JmsComponent=JmsComponent.JmsComponent自动确认(connectionFactory);jmsComponent.setConcurrentConsumers(10);addComponent(“jms”,jmsComponent)首先初始化
cdiCamelContext
并注入
connectionFactory
,正如我上面所说的。我指的是指定代理、连接工厂等的部分
@Resource(lookup = "jms/DurableConnectionFactory")
private ConnectionFactory connectionFactory;