1

如何使用队列中的特定标头消息。我正在使用骆驼activemq。

路由构建器:

.....
    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. 的消息?

4

1 回答 1

5

您可以使用 JMS 消息选择器。在 Camel 消费者端点中,您可以使用以下selector选项:http ://camel.apache.org/jms

排长队的东西

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

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

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

其中 %3D 被=编码。

于 2015-07-24T05:27:48.147 回答