You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Gary Tully <ga...@gmail.com> on 2014/12/05 16:22:29 UTC

Re: ActiveMQ redelivering acknowledged messages

It looks like my bad w.r.t CLIENT_ACK, my focus was on the tck and
transaction semantics.
For folks who use the rar managed connection factory in plain jms mode
there is a need to control the ack mode.
I added  connection info param useSessionArgs  to allow that.
  - CLIENT_ACKNOWLEDGE mode support should be back in 5.11
https://issues.apache.org/jira/browse/AMQ-5264
https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=9e139017

On 25 November 2014 at 15:47, Tim Bain <tb...@alumni.duke.edu> wrote:

> Gary Tully, does the first change Sergiy referenced (
>
> http://mail-archives.apache.org/mod_mbox/activemq-commits/201403.mbox/%3C58f67097f342495e921e1a25e951aec6@git.apache.org%3E
> )
> really disable CLIENT_ACKNOWLEDGE from 5.10 onward, or is he
> misunderstanding the change you made?  If he's got it right, can you please
> explain why that option is no longer supported?
>
> On Tue, Nov 4, 2014 at 7:37 AM, sbarlabanov <co...@sergiy-barlabanov.de>
> wrote:
>
> > I double checked everything and did a little bit debugging.
> > According to the current state of ActiveMQ code (5.10) , it may indeed
> > loose
> > acknowledgements.
> >
> > 1. Since 5.10 CLIENT_ACKNOWLEDGE is ignored in the application server -
> see
> > the commit adb49f56 by Gary from 15.03.2014. This was quite a strange
> > commit, since this was a very important change breaking the previous
> > behavior even if it had not been really spec conform - it did work since
> > years and suddenly it was changed without any corresponding Jira and any
> > public information.
> > Now AUTO_ACKNOWLEDGE is used instead.
> >
> > 2. Despite http://activemq.apache.org/async-sends.html stating that
> > persistent messages are sent synchronously outside a transaction, the
> ACKs
> > are sent ASYnchronously outside a transaction in an application server by
> > default (and I did not find any property which would change this
> behavior).
> > Since the ACKs are sent asynchronously, they may be lost obviously. And
> the
> > corresponding messages will be redelivered. This is quite a big pain
> since
> > everybody would expect an acknowledge of a persistent message to be
> > synchronous regardless whether it is AUTO_ACK or CLIENT_ACK.
> >
> > So the workaround in our case is to use JTA transactions instead of
> > CLIENT_ACKNOWLEDGE and Message#acknowledge. This would be at least more
> > spec
> > conform.
> >
> > But nevertheless it would be nice to see any comments from ActiveMQ
> > developers about points 1 and 2 I described above.
> >
> >
> >
> > --
> > View this message in context:
> >
> http://activemq.2283324.n4.nabble.com/ActiveMQ-redelivering-acknowledged-messages-tp4686898p4686933.html
> > Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> >
>

Re: ActiveMQ redelivering acknowledged messages

Posted by Tim Bain <tb...@alumni.duke.edu>.
Cool, thanks for taking another look at it.

On Fri, Dec 5, 2014 at 8:22 AM, Gary Tully <ga...@gmail.com> wrote:

> It looks like my bad w.r.t CLIENT_ACK, my focus was on the tck and
> transaction semantics.
> For folks who use the rar managed connection factory in plain jms mode
> there is a need to control the ack mode.
> I added  connection info param useSessionArgs  to allow that.
>   - CLIENT_ACKNOWLEDGE mode support should be back in 5.11
> https://issues.apache.org/jira/browse/AMQ-5264
> https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=commit;h=9e139017
>
> On 25 November 2014 at 15:47, Tim Bain <tb...@alumni.duke.edu> wrote:
>
> > Gary Tully, does the first change Sergiy referenced (
> >
> >
> http://mail-archives.apache.org/mod_mbox/activemq-commits/201403.mbox/%3C58f67097f342495e921e1a25e951aec6@git.apache.org%3E
> > )
> > really disable CLIENT_ACKNOWLEDGE from 5.10 onward, or is he
> > misunderstanding the change you made?  If he's got it right, can you
> please
> > explain why that option is no longer supported?
> >
> > On Tue, Nov 4, 2014 at 7:37 AM, sbarlabanov <
> contact@sergiy-barlabanov.de>
> > wrote:
> >
> > > I double checked everything and did a little bit debugging.
> > > According to the current state of ActiveMQ code (5.10) , it may indeed
> > > loose
> > > acknowledgements.
> > >
> > > 1. Since 5.10 CLIENT_ACKNOWLEDGE is ignored in the application server -
> > see
> > > the commit adb49f56 by Gary from 15.03.2014. This was quite a strange
> > > commit, since this was a very important change breaking the previous
> > > behavior even if it had not been really spec conform - it did work
> since
> > > years and suddenly it was changed without any corresponding Jira and
> any
> > > public information.
> > > Now AUTO_ACKNOWLEDGE is used instead.
> > >
> > > 2. Despite http://activemq.apache.org/async-sends.html stating that
> > > persistent messages are sent synchronously outside a transaction, the
> > ACKs
> > > are sent ASYnchronously outside a transaction in an application server
> by
> > > default (and I did not find any property which would change this
> > behavior).
> > > Since the ACKs are sent asynchronously, they may be lost obviously. And
> > the
> > > corresponding messages will be redelivered. This is quite a big pain
> > since
> > > everybody would expect an acknowledge of a persistent message to be
> > > synchronous regardless whether it is AUTO_ACK or CLIENT_ACK.
> > >
> > > So the workaround in our case is to use JTA transactions instead of
> > > CLIENT_ACKNOWLEDGE and Message#acknowledge. This would be at least more
> > > spec
> > > conform.
> > >
> > > But nevertheless it would be nice to see any comments from ActiveMQ
> > > developers about points 1 and 2 I described above.
> > >
> > >
> > >
> > > --
> > > View this message in context:
> > >
> >
> http://activemq.2283324.n4.nabble.com/ActiveMQ-redelivering-acknowledged-messages-tp4686898p4686933.html
> > > Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> > >
> >
>