[ https://issues.apache.org/jira/browse/AMQ-6454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15549300#comment-15549300 ]
Gary Tully commented on AMQ-6454: --------------------------------- actually the fix may be a simple as deferring the close in this case, the session close will cleanup in any event. Will give the unit tests a whirl to see if this change breaks any existing use case. > Message is redelivered after succesfull acknowledge() > ----------------------------------------------------- > > Key: AMQ-6454 > URL: https://issues.apache.org/jira/browse/AMQ-6454 > Project: ActiveMQ > Issue Type: Bug > Affects Versions: 5.14.1 > Reporter: Yuriy > Attachments: activemq-bug.zip > > > JMS message is redelivered after successful call of acknowledge(). > The following methods are invoked: > Thread1 : Message message = consumer.receive(); > Thread2 : consumer.close(); > Thread1: message.acknowledge(); > All the methods return successfully but the message is redelivered on the > next receive() call. Note that consumer.close() is typically used to force > consumer.receive() to return. > According to JMS specification the scope of message acknowledge() call is > session (not message consumer): > https://docs.oracle.com/javaee/7/api/javax/jms/Message.html#acknowledge-- > A simple program to reproduce the bug is attached. > Observed behavior: > Message is redelivered. > Program output: > ============ > Message sent. Id=ID:comp-63860-1475602285903-1:1:1:1:1 > Message received. Id=ID:comp-63860-1475602285903-1:1:1:1:1. Text=Welcome! > Message succesfully acknowledged > Message received. Id=ID:comp-63860-1475602285903-1:1:1:1:1. Text=Welcome! > Message succesfully acknowledged > Expected behavior: > Message should be delivered only once. -- This message was sent by Atlassian JIRA (v6.3.4#6332)