We have an application that should read a single message from a queue (a “job” 
queue) and then stop processing more messages.  Think of it as a “batch 
request”.  This is entirely using the JMS driver. Is there a good pattern for 
this?

Under ActiveMQ 5, I call consumer.close(), session.close() from onMessage() and 
that works fine.  However, session.close() is not allowed under Artemis (and 
maybe it was always wrong).

I’ve tried calling only consumer.close(), and leave the session open.  But the 
message is not ACked.  Explicitly calling message.acknowledge() doesn’t work 
either, because it gets to >>> and individualAck is false:

public void acknowledge() throws JMSException {
   if (session != null) {
      try {
         if (session.isClosed()) {
            throw ActiveMQClientMessageBundle.BUNDLE.sessionClosed();
         }
>>>         if (individualAck) {
            message.individualAcknowledge();
         }

Going back to the original question, what is the recommended pattern for this?

Thanks
john


[rg] <https://www.redpointglobal.com/>

John Lilley

Chief Architect, Redpoint Global Inc.

888 Worcester Street, Suite 200 Wellesley, MA 02482

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.

Reply via email to