如何根据邮件头属性只读取特定的队列消息

时间:2015-07-21 20:40:47

标签: jms apache-camel activemq message-queue custom-headers

我在activemq队列中有一个消息列表。每条消息都有一个带有值的自定义标头属性。我应该如何只能访问自定义标头属性值= 123的消息。?

我使用下面的内容从队列中选择一条消息。如何选择具有customHeaderProperty = 123的所有消息或单个消息。?

ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
Exchange ex = consumerTemplate.receive("activemq:queueName",10000);
String data = ex.getIn().getBody(String.class);
String number = ex.getIn().getHeader("customProperty", String.class);

1 个答案:

答案 0 :(得分:2)

在消费者身上使用消息选择器。选择器是类似SQL的查询。所以你可以写一些像myCustomHeader = 123这样的东西。这是pretty good cheat sheet

由于您使用apache-camel标记了问题,我猜您正在使用Camel设置。在这种情况下,您需要为Camel提供选择器。类似于from("activemq:queue:myqueue?selector=myCustomHeader%3D123").