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/

Reply via email to