【发布时间】:2015-03-02 16:43:45
【问题描述】:
在我的消息队列中包含多条消息。我想按特定属性分组。这些都有一个自定义属性“item-id”
这个我现在将某些价值归结为:运动、电影……
我喜欢这样做:
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());
列表也是空的。
我的错误是什么?
【问题讨论】:
-
在运行查询过滤器之前,您是否将一些消息放入队列中?
-
是和不是。我在开始前尝试了队列中的一些消息,并在开始时尝试了一个空队列。
-
断开所有监听器,将一些具有标题“item-id”和值为“sports”的消息放入队列中,然后再次运行您的过滤器。