Discussion:
[openjms-developer] [ openjms-Bugs-823331 ] Can't acknowledge message after republishing
SourceForge.net
2003-10-19 14:41:18 UTC
Permalink
Bugs item #823331, was opened at 2003-10-14 20:15
Message generated for change (Comment added) made by tanderson
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=823331&group_id=54559

Category: message engine
Group: v0.7.6-rc2
Status: Closed
Resolution: Fixed
Priority: 5
Submitted By: Tim Anderson (tanderson)
Assigned to: Tim Anderson (tanderson)
Summary: Can't acknowledge message after republishing

Initial Comment:
Given the following set of conditions:
. single CLIENT_ACKNOWLEDGE session
. durable subscriber, subscribing to "topic1"
. messages received via the subscriber are republished
to "topic2", prior to their acknowledgement

...any message received via the subscriber will be re-
received when the subscriber is re-recreated i.e, the
acknowledgement is being ignored.

This was originally described in the following thread:
http://sourceforge.net/forum/forum.php?
thread_id=950810&forum_id=181831

Test case to reproduce to follow.

----------------------------------------------------------------------
Comment By: Tim Anderson (tanderson)
Date: 2003-10-20 00:41

Message:
Logged In: YES
user_id=557161

Fixed in CVS. Will be available in the 0.7.6 release.

A corresponding test case has been added to JMS CTS:
org.exolab.jmscts.test.session.clientack.RepublishTest

----------------------------------------------------------------------

Comment By: Tim Anderson (tanderson)
Date: 2003-10-14 21:04

Message:
Logged In: YES
user_id=557161

The problem is that when the message is republished, it is
assigned a new JMSMessageID, as per section 3.4.3 of the
spec. However, OpenJMS uses the JMSMessageID for
message acknowledgement - when message.acknowledge()
is invoked, the JMSMesageID assigned at republication is
used, rather than the identifier it had when it was received.

According to section 4.4.11 of the spec,
CLIENT_ACKNOWLEDGE has the following
behaviour: "acknowledging a consumed message
automatically acknowledges the receipt of all messages that
have been delived by its session".
In other words, although the message has been republished,
it should still be possible to invoke acknowledge() and ack all
messages received by the session.


----------------------------------------------------------------------

You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=474136&aid=823331&group_id=54559
Loading...