Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 如何使用端点类为不同的选择器创建多个JmsQueueEndpoint对象_Apache Camel_Jms_Activemq - Fatal编程技术网

Apache camel 如何使用端点类为不同的选择器创建多个JmsQueueEndpoint对象

Apache camel 如何使用端点类为不同的选择器创建多个JmsQueueEndpoint对象,apache-camel,jms,activemq,Apache Camel,Jms,Activemq,我有一个队列,我希望在其中处理选定的消息,并能够使用Java DSL实现它,如下所示: from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '" + SELECTOR_ID_TRANSACTION_A2A + "'") from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '

我有一个队列,我希望在其中处理选定的消息,并能够使用Java DSL实现它,如下所示:

from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '" + SELECTOR_ID_TRANSACTION_A2A + "'")

from("amq:queue:{{jms.miscQueue}}?transacted=false&selector=DSBSelectorID %3D '" + SELECTOR_ID_TRANSACTION_A2P + "'")
现在,我想通过如下方式创建JMS端点来实现同样的效果,实际上Java DSL工作得很好,但随着时间的推移,调试变得越来越困难,因为越来越多的选项嵌入到URI中:

 JmsQueueEndpoint activeMQEndpointA2A = endpoint("amq:queue:{{jms.miscQueue}}", JmsQueueEndpoint.class);
 activeMQEndpointA2A.setTransacted(false);
 activeMQEndpointA2A.setSelector("DSBSelectorID %3D 'Route-Transaction-A2A'");


 JmsQueueEndpoint activeMQEndpointA2P = endpoint("amq:queue:{{jms.miscQueue}}", JmsQueueEndpoint.class);
 activeMQEndpointA2P.setTransacted(false);
 activeMQEndpointA2P.setSelector("DSBSelectorID %3D 'Route-Transaction-A2P'");
当我在Camel路由中使用activeMQEndpointA2A和activeMQEndpointA2P时,它只对第一个端点有效,而第二个端点无法连接到队列,并不断抛出错误,如下所示

为目标设置JMS消息侦听器调用程序失败 “io.az.jms”-正在尝试恢复。原因:DSBSelectorID%3D “路由事务-A2P”


有人能建议是否可以通过Java端点实现吗?另外,如果我有多条路由,并且要在端点URI上定义多个选项,那么推荐的方法是什么?

您不能这样做,获取一个端点,然后改变其属性,然后再次获取该端点。您将获得与第一个相同的实例,例如A2A和A2P是同一个端点实例


您需要使用唯一的端点,因此选择器应该位于uri中

是否将这些端点添加到上下文中?