使用来自 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 =
已编码。
如何使用来自 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 =
已编码。