Orphan connections when using transacted durable topics.
--------------------------------------------------------
Key: AMQNET-65
URL: https://issues.apache.org/activemq/browse/AMQNET-65
Project: ActiveMQ .Net
Issue Type: Bug
Components: ActiveMQ Client
Environment: Windows XP, Windows 2003
Reporter: Demis Bellot
Assignee: James Strachan
Attachments: DurableTest.cs
There is a problem with the latest version of the NMS Client where if you
attempt to commit a session right before you close it.
It is related to this problem:
http://www.nabble.com/Orphan-connections-from-.NET-clients-tf3879502s2354.html#a10994101
Other worthy mentions:
- Most of the NMS client tests with the latest v5 ActiveMQ-SNAPSHOT release.
- The current DurableTest.cs does not actually test the number of messages
coming back. - definitely required as v5 of ActiveMQ does not actually receive
any messages.
- Another test should be included that attempts to reconnect with the durable
subscriber id to catch the InvalidClientIDException
{code:Title=DurableTest.cs}
[Test]
public void TestMeTransactional()
{
count = 0;
RegisterDurableConsumer();
SendPersistentMessage();
using (IConnection connection = Factory.CreateConnection())
{
connection.ClientId = CLIENT_ID;
connection.Start();
using (ISession session = connection.CreateSession(
AcknowledgementMode.Transactional))
{
ITopic topic = session.GetTopic(TOPIC);
IMessageConsumer consumer = session.CreateDurableConsumer(
topic, CONSUMER_ID, "2 > 1", false);
consumer.Listener += new MessageListener(consumer_Listener);
/// Don't know how else to give the system enough time.
System.Threading.Thread.Sleep(3000);
Assert.AreEqual(1, count);
Console.WriteLine("Count = " + count);
SendPersistentMessage();
System.Threading.Thread.Sleep(3000);
Assert.AreEqual(2, count);
Console.WriteLine("Count = " + count);
session.Commit();
//Timeout required before closing/disposing the connection
otherwise orphan connection remains
//and test will fail when run the second time with a
InvalidClientIDException: DurableClientID already connected.
//System.Threading.Thread.Sleep(3000);
consumer.Dispose();
connection.Stop();
}
}
}
{/code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.