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.