On 9 December 2016 at 16:40, Oleksandr Rudyy <[email protected]> wrote:
> Hi,
>
> Recently I noticed that new jms client can fail to acknowledge the
> message (with auto-ack delivery mode) which was in a process of
> delivery with MessageListener when Connection#close() is called from
> main application thread.
>
> The exception like the one below is delivered into ExceptionListener:
> Connection ExceptionListener fired, exiting.
> javax.jms.IllegalStateException: The MessageConsumer is closed
>     at 
> org.apache.qpid.jms.JmsMessageConsumer.checkClosed(JmsMessageConsumer.java:328)
>     at 
> org.apache.qpid.jms.JmsMessageConsumer.doAckConsumed(JmsMessageConsumer.java:372)
>     at 
> org.apache.qpid.jms.JmsMessageConsumer.access$600(JmsMessageConsumer.java:52)
>     at 
> org.apache.qpid.jms.JmsMessageConsumer$MessageDeliverTask.run(JmsMessageConsumer.java:679)
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>     at java.lang.Thread.run(Thread.java:745)
>
> Although such behavior could be considered JMS spec compliment, as the
> specs states in "4.3.5 Closing a Connection" of JMS spec 1.1:
> "If one or more of the connection’s session’s message listeners is processing 
> a
> message at the point when connection close is invoked, all the facilities of 
> the
> connection and its sessions must remain available to those listeners until 
> they
> return control to the JMS provider."
>
> Thus, it seems that closing of the connection is allowed without
> sending the acknowledgment, as acknowledgment is sent after the
> control is returned to JMS provider.
>
> However, from practical point of view such behavior might not be
> desirable, as it causes duplicate message deliveries for those
> messages not being acknowledged  on close. I would expect from the
> client to acknowledge the delivered messages with
> MessageConsume#onMessage before the connection close.
>
> Are there any plans to change the client to wait for in-flight message
> delivery acknowledgment  before closing the connection?
>
> Kind Regards,
> Alex
>

No existings plans, feel free to JIRA it :)

Robbie

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to