使用来自 queue 的 activemq、camel 选择器选择特定的 header 消息

Pick specific header messages using activemq,camel selectors from queue

如何使用来自 queue 的特定 header 消息。我正在使用骆驼 activemq。

路线建设者:

.....
    from("activemq:Q1").
      .setHeader("myHeader",xpath(...))
          .to("activemq:Q2")
.....

我试图在另一个 class 之类的东西中使用那些具有特定 header 的消息。

....
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 消息选择器。在 Camel 消费者端点中,您可以使用 selector 选项:http://camel.apache.org/jms

有点像

Exchange exchange = consumerTemplate.receive("activemq:Q2?selector=myHeader",10000);

虽然我不记得 header 的名称是否足够,或者你需要做

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

其中 %3D = 已编码。