What is the correct syntax for selecting messages based on their respective JMS identifier?
I am currently using:
String selector = "JMSMessageID='ID:305:1:5:1:1'"; messageConsumer = session.createConsumer(getRetryQueue(), selector);
The above syntax works in a mock broker test. But in the direction of ActiveMQ messages are not polled.
Source:
@Override public Message readMessageFromRetryQueueByJmsId(String jmsId) throws QueueingException { Connection connection = null; Session session = null; MessageConsumer messageConsumer = null; Message message = null; try { connection = getConnectionFactory().createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); messageConsumer = session.createConsumer(getRetryQueue(), "JMSMessageID='"+jmsId+"'"); message = messageConsumer.receiveNoWait(); } catch (JMSException e) { throw new QueueingException("Failed to read message from MessageConsumer."); } finally { try { messageConsumer.close(); } catch (Exception e) { } try { session.close(); } catch (Exception e) { } try { connection.close(); } catch (Exception e) { } } return message; }
source share