如何根据消息 header 属性 仅读取特定的 queue 消息

how to read only specific queue messages based on message header property

我在 activemq queue 中有一个消息列表。每条消息都有一个自定义 header 属性 值。我应该如何才能只访问那些自定义 header 属性 值 = 123.?

的消息

我正在使用类似下面的方法从 queue 中挑选一条消息。如何选择 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 的东西。这是一个pretty good cheat sheet.

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