2015-03-02 89 views
0

在我的消息队列中包含几条消息。这我想按特定属性进行分组。这些都有一个自定义属性“项-ID”ActiveMQ消息选择器

这个我现在一定值:体育,电影......

我做到这一点,如:

new MessageCreator() { 
ObjectMessage message = session.createObjectMessage(); 
message.setObject(data); 
message.setStringProperty("item-id", "sports"); 
} 

也显示该值在属性的队列中。

当我尝试检索包含此属性的消息时,我得不到任何结果。

一审判决:

Connection con = pc.createConnection(); 
Session sess =con.createSession(false,Session.AUTO_ACKNOWLEDGE);  
AmqMessagesQueryFilter queryFilter = new AmqMessagesQueryFilter(pc, queue); 
con.start(); 
String selector = "item-id = 'sports'"; 
List messages = queryFilter.query(selector); 

但列表为空

二审:

Connection con = pc.createConnection(); 
Session sess = con.createSession(false, Session.AUTO_ACKNOWLEDGE); 

AmqMessagesQueryFilter queryFilter = new AmqMessagesQueryFilter(pc, queue); 

QueueBrowser queueBrowser = sess.createBrowser(queue,"item-id = 'sports'"); 
con.start(); 
List messages=Collections.list(queueBrowser.getEnumeration()); 

而且列表为空。

我的错误是什么?

+0

您是否在运行查询过滤器之前在队列中放置了一些消息? – ramp 2015-03-04 10:24:04

+0

是和不是。我在开始之前尝试了一些队列中的消息,并在开始时使用了一个空队列。 – fuerst 2015-03-12 08:02:39

+0

断开所有听众的联系,将一些消息放入队列中,其中包含标题'item-id'和值'sports',然后再次运行您的过滤器。 – ramp 2015-03-12 09:37:42

回答