В моей очереди сообщений содержится несколько сообщений. Это я хочу группировать по определенным свойствам. Все они имеют пользовательское свойство «идентификатор записи»Селектор сообщений 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());
Также список пуст.
В чем моя ошибка?
Вы помещали некоторые сообщения в очередь перед запуском фильтра запросов? – ramp
да и нет. Я пытался с некоторыми сообщениями в очереди перед запуском и с пустой очередью при запуске. – fuerst
Отключите все прослушиватели, Поместите некоторые сообщения в очередь, у которых есть заголовок 'item-id' и значение 'sports', а затем снова запустите свой фильтр. – ramp