2015-03-02 3 views
0

В моей очереди сообщений содержится несколько сообщений. Это я хочу группировать по определенным свойствам. Все они имеют пользовательское свойство «идентификатор записи»Селектор сообщений 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

+0

да и нет. Я пытался с некоторыми сообщениями в очереди перед запуском и с пустой очередью при запуске. – fuerst

+0

Отключите все прослушиватели, Поместите некоторые сообщения в очередь, у которых есть заголовок 'item-id' и значение 'sports', а затем снова запустите свой фильтр. – ramp

ответ

0

Я знаю, что это слишком поздно, но это, вероятно, сэкономит кому-то много времени (и разочарование).

Не используйте тире в селекторе сообщений. При необходимости используйте подчеркивания. Поиск «Идентификаторы» здесь: https://docs.oracle.com/javaee/1.4/api/javax/jms/Message.html

Смежные вопросы