Jms 使用activemq、来自队列的骆驼选择器选择特定的头消息

Jms 使用activemq、来自队列的骆驼选择器选择特定的头消息,jms,apache-camel,activemq,custom-headers,Jms,Apache Camel,Activemq,Custom Headers,如何使用队列中的特定头消息。我正在使用camel-activemq routebuilder: ..... from("activemq:Q1"). .setHeader("myHeader",xpath(...)) .to("activemq:Q2") ..... 我试图使用另一个类中具有特定头的消息,比如 .... ConsumerTemplate consumerTemplate = camelContext.createConsumerTempl

如何使用队列中的特定头消息。我正在使用camel-activemq

routebuilder:

.....
    from("activemq:Q1").
      .setHeader("myHeader",xpath(...))
          .to("activemq:Q2")
.....
我试图使用另一个类中具有特定头的消息,比如

....
ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
Exchange exchange = consumerTemplate.receive("activemq:Q2",10000);

String body = exchange.getIn().getBody(String.class);
String customvalue = exchange.getIn().getHeader("myHeader", String.class);
.....

如何仅获取myHeader=123的消息?

您可以使用JMS消息选择器。在骆驼消费者端点中,您可以使用
选择器
选项:

一长串的东西

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader",10000);
虽然我不记得标题的名称是否足够,或者您需要这样做

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader %3D '*'",10000);

其中%3D是
=
编码的。

您可以使用JMS消息选择器。在骆驼消费者端点中,您可以使用
选择器
选项:

一长串的东西

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader",10000);
虽然我不记得标题的名称是否足够,或者您需要这样做

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader %3D '*'",10000);
其中%3D是
=
编码的