在我的消息队列中包含几条消息。我希望按特定属性进行分组。这些都有自定义属性“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());
此列表也是空的。
我的错误是什么?
答案 0 :(得分:1)
我知道这已经太晚了,但这可能会浪费很多时间浪费(和挫败感)。
请勿在消息选择器中使用短划线。如果需要,请使用下划线。 在此处查找“标识符”:https://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html