activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <>
Subject [jira] Commented: (AMQNET-176) Messages received by a transactional session are not redelivered when the session dies before being commited.
Date Wed, 28 Oct 2009 21:52:52 GMT


Timothy Bish commented on AMQNET-176:

I've been adding many new unit tests since the release of NMS 1.1 which had 134 tests, we
are now at 343.  The listed revision for this fix is passing all tests consistently.  

That said, trunk is still in flux so anything beyond the listed rev might be unstable as I
add things like Individual ack etc.  You are welcome to grab the latest NMS and NMS.ActiveMQ
source and test it out.  If you find any new issues please create a new Jira to cover it and
if you want to try and create an NUnit test case that demonstrates the issue that'd really
be helpful as we can incorporate that into the test suite so we know your issue is fixed and
stays fixed in later builds.

Good luck, and we welcome any feedback.

> Messages received by a transactional session are not redelivered when the session dies
before being commited.
> -------------------------------------------------------------------------------------------------------------
>                 Key: AMQNET-176
>                 URL:
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ
>    Affects Versions: 1.1.0
>         Environment: .NET 2.0 on Windows XP
>            Reporter: Daniel Ellis
>            Assignee: Timothy Bish
>             Fix For: 1.2.0
>         Attachments:, Message to JMS transactional session.pcap, Message
to NMS transactional session.pcap
> In our testing we have discovered that messages are not redelivered as expected when
we are using a transactional session.  The test goes as follows:-
> 1.  Create a connection and a transactional session.
> 2.  Create a queue consumer, add a listener and start the connection.
> 3.  Add a message to the queue, the message will arrive on the consumer.
> 4.  Kill the session (either dispose of the session and connection, or just kill the
> 5.  Perform steps 1 & 2 again.
> Note that the message is not redelivered.
> We expect the message to be redelivered because the transaction was never committed.
 Looking at the Queues page on the web admin, you can see the queue count is still 1.  So
the message is still on the broker.
> To diagnose whether this is an NMS issue or an ActiveMQ issue, I created a Java application
to test this issue using JMS.
> The resulting behaviour is as expected when using JMS.  After the message is received,
I can either cleanly dispose the session, or kill the application, and the message will be
redelivered next time you start the app.
> I was a little confused as to why the message did not get redelivered, in the example
where I simply kill the process.  I would expect the broker to handle NMS and JMS clients
the same, as the TCP connection would simply be terminated.
> I then noticed a difference between NMS and JMS, when looking in the web admin.   When
a message arrives on a JMS client the queue count shows 1, and clicking on the queue shows
the message still on the queue.  When a message arrives on an NMS client, the queue count
goes to 1, but clicking on the queue shows no messages.
> Clearly, there is a difference between how JMS and NMS handle an incoming message on
a transactional session.  Could it be that NMS is sending an ack for each message when it

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message