如何读取基于消息头属性只有特定队列中的消息 [英] how to read only specific queue messages based on message header property

查看:250
本文介绍了如何读取基于消息头属性只有特定队列中的消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ActiveMQ的队列中的邮件列表。每个消息有值自定义标题属性。我应该怎么只能访问其自定义页眉属性值这些消息= 123?

我使用类似下面接从队列中的消息。如何挑选所有的消息或具有customHeaderProperty = 123?

单个消息

  ConsumerTemplate consumerTemplate = camelContext.createConsumerTemplate();
交易所前= consumerTemplate.receive(ActiveMQ的:QUEUENAME,10000);
字符串数据= ex.getIn()getBody(为String.class)。
。弦数= ex.getIn()getHeader(CustomProperty的,为String.class);


解决方案

在消费者使用消息选择。一个选择是像查询SQL。所以,你可以写类似 myCustomHeader = 123 。这里是一个 pretty好的小抄

由于您标记与Apache骆驼的问题,我猜你是一个骆驼的设置工作。在这种情况下,你需要选择提供给骆驼。类似从(ActiveMQ的:队列:myQueue中选择= myCustomHeader%3D123)

I have a list of messages in activemq queue. each message has a custom header property with value. How I should be able to access only those messages whose custom header property value = 123.?

I am using something like below to pick a message from queue. How to pick all messages which or a single message which has 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);

解决方案

Use message selectors on the consumer. A selector is a SQL like query. So you could write something like myCustomHeader = 123. Here is a pretty good cheat sheet.

Since you tagged the question with apache-camel, I guess you are working with a Camel setup. In that case, you need to supply the selector to Camel. Something like from("activemq:queue:myqueue?selector=myCustomHeader%3D123")..

这篇关于如何读取基于消息头属性只有特定队列中的消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆