ActiveMQ 消息选择器

fue*_*rst 2 activemq-classic jms

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

我现在将某些价值观定为:体育、电影......

我这样做是这样的:

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

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

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

初审:

 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); 
Run Code Online (Sandbox Code Playgroud)

但列表是空的

二审:

 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());
Run Code Online (Sandbox Code Playgroud)

该列表也是空的。

我的错误是什么?

sm0*_*e21 5

我知道这已经太晚了,但这可能会节省一些人浪费的大量时间(和挫败感)。

不要在消息选择器中使用破折号。如果需要,请使用下划线。在此处查找“标识符”:https ://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html