I am trying to build a utility for purging a queue of all messages matching a filter. The purpose is to remove “job start” messages that have been aborted before they were consumed and started.
To this end I have code like: Destination destination = session.createQueue(queueName); String selector = propertyName + "='" + propertyValue + "'"; var consumer = session.createConsumer(destination, selector); Message message = null; while ((message = consumer.receive(PURGE_TIMEOUT_MS)) != null) { result.add(message); } I am unsure about PURGE_TIMEOUT_MS. I only care about messages that are already in the queue. Does this mean that receiveImmediately() would always get a message if one is in the queue? Or can there be a small delay while (I am guessing) some internal consumer waits for a message to be delivered asynchronously and then signals a semaphore? If so, how long should I wait to be sure? Thanks john [rg] <https://www.redpointglobal.com/> John Lilley Data Management Chief Architect, Redpoint Global Inc. 34 Washington Street, Suite 205 Wellesley Hills, MA 02481 M: +1 7209385761<tel:+1%207209385761> | john.lil...@redpointglobal.com<mailto:john.lil...@redpointglobal.com> PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is confidential and is intended solely for the use of the individual(s) to whom it is addressed. If you believe you received this e-mail in error, please notify the sender immediately, delete the e-mail from your computer and do not copy, print or disclose it to anyone else. If you properly received this e-mail as a customer, partner or vendor of Redpoint, you should maintain its contents in confidence subject to the terms and conditions of your agreement(s) with Redpoint.