Jms 如何基于消息头属性仅读取特定队列消息

Jms 如何基于消息头属性仅读取特定队列消息,jms,apache-camel,activemq,message-queue,custom-headers,Jms,Apache Camel,Activemq,Message Queue,Custom Headers,我在activemq队列中有一个消息列表。每个消息都有一个具有值的自定义标头属性。如何仅访问自定义标头属性值为123的消息 我正在使用下面这样的方法从队列中选取消息。如何选择customHeaderProperty=123的所有邮件或单个邮件 ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate(); Exchange ex = consumerTemplate.receive("activemq:queu

我在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);

在消费者上使用消息选择器。选择器是类似SQL的查询。因此,您可以编写类似于
myCustomHeader=123
的代码。这是一本书


因为您使用ApacheCamel标记了这个问题,所以我猜您使用的是camel设置。在这种情况下,您需要向Camel提供选择器。类似于来自(“activemq:queue:myqueue?selector=myCustomHeader%3D123”)的

您的意思是使用consumerTemplate。?您用Camel标记了问题,所以我认为您使用了它。选择器既可以用于普通java/jms,也可以用于基于spring的使用者。。或者大多数/所有支持jms的框架。是的,我使用的是camelContext。但我没有明白。我已经用代码更新了问题,请您详细说明。谢谢