I've just applied your test case to SVN along with a fix and a fix for AMQ-883 and AMQ-865 if you want to try it out. Many thanks to Bryan Schmidt who popped by on IRC and gave me a fix and suggestions on how to deal with C# event delegates.
On 8/17/06, James Strachan <[EMAIL PROTECTED]> wrote:
This is sounding a bit like this issue... https://issues.apache.org/activemq/browse/AMQ-865 thanks for the test case, have added it to that issue. We'll take a look. On 8/17/06, AFinnell <[EMAIL PROTECTED]> wrote: > > Notice that count is 0 when the consumer is created again, once another > message is sent, all of a sudden two messages are received. > > This NUnit verifies what I said, not what should happen. > > ------ > > using System; > using System.Collections.Generic; > using System.Text; > > using NUnit.Framework; > using NUnit.Extensions; > using ActiveMQ; > using NMS; > using ActiveMQ.Commands; > using System.Threading; > > namespace ActiveMQDurableTest > { > [TestFixture] > public class DurableTest > { > private static string TOPIC = "TestTopic"; > > private static String URI = "tcp://localhost:61616"; > > private static String CLIENT_ID = "DurableClientId"; > > private static String CONSUMER_ID = "ConsumerId"; > > private static ConnectionFactory FACTORY = new ConnectionFactory(new > Uri(URI)); > > private int count = 0; > > public void RegisterDurableConsumer() > { > using (IConnection connection = FACTORY.CreateConnection()) > { > connection.ClientId = CLIENT_ID; > connection.Start(); > > using (ISession session = > connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge)) > { > ITopic topic = session.GetTopic(TOPIC); > IMessageConsumer consumer = > session.CreateDurableConsumer(topic, CONSUMER_ID, "2 > 1", false); > consumer.Dispose(); > } > > connection.Stop(); > } > } > > public void SendPersistentMessage() > { > using (IConnection connection = FACTORY.CreateConnection()) > { > connection.Start(); > using (ISession session = > connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge)) > { > ITopic topic = session.GetTopic(TOPIC); > ActiveMQTextMessage message = new > ActiveMQTextMessage("Hello"); > message.NMSPersistent = true; > message.Persistent = true; > > IMessageProducer producer = session.CreateProducer(); > producer.Send(topic, message); > producer.Dispose(); > } > connection.Stop(); > } > } > > [Test] > public void TestMe() > { > count = 0; > > RegisterDurableConsumer(); > SendPersistentMessage(); > > using (IConnection connection = FACTORY.CreateConnection()) > { > connection.ClientId = CLIENT_ID; > connection.Start(); > > using (ISession session = > connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge)) > { > 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. > /// > Thread.Sleep(5000); > > Assert.AreEqual(0, count); > > Console.WriteLine("Count = " + count); > > SendPersistentMessage(); > > Thread.Sleep(5000); > > Assert.AreEqual(2, count); > > Console.WriteLine("Count = " + count); > > consumer.Dispose(); > } > > connection.Stop(); > } > } > > /// <summary> > /// > /// </summary> > /// <param name="message"></param> > private void consumer_Listener(IMessage message) > { > ++count; > } > } > } > > > James.Strachan wrote: > > > > Which version of ActiveMQ are you using BTW? > > Any chance you could refactor your test code into an NUnit test case? > > > > On 8/16/06, AFinnell <[EMAIL PROTECTED]> wrote: > >> > >> I'm using the NMS client for C# and it appears that the durable messages > >> need > >> something to prime the pump. > >> > >> Steps to reproduce: > >> > >> Note: I am using the Listener handler on the IMessageConsumer object for > >> an > >> asynch response. > >> > >> 1. Sign on with durable topic subscription > >> 2. Disconnect client > >> 3. Send a persistent message > >> 4. Sign back on to durable topic subscription > >> (At this point the message is not sent to the client) > >> 5. Send a new message to the client > >> 6. Both messages are now received. > >> > >> I can post my code as needed. Is the problem I'm having apparent to > >> anyone? > >> > >> Andrew > >> -- > >> View this message in context: > >> http://www.nabble.com/Durable-topic-subscription-needs-pump-primed.-tf2117517.html#a5839659 > >> Sent from the ActiveMQ - User forum at Nabble.com. > >> > >> > > > > > > -- > > > > James > > ------- > > http://radio.weblogs.com/0112098/ > > > > > > -- > View this message in context: http://www.nabble.com/Durable-topic-subscription-needs-pump-primed.-tf2117517.html#a5852831 > Sent from the ActiveMQ - User forum at Nabble.com. > > -- James ------- http://radio.weblogs.com/0112098/
-- James ------- http://radio.weblogs.com/0112098/
