Apache.NMS.ActiveMQ.Test.RollbackRedeliveryTest.TestMessageRedelivedMaxRedeliveriesTimesMultipleSessions C# (CSharp) Method

TestMessageRedelivedMaxRedeliveriesTimesMultipleSessions() private method

        public void TestMessageRedelivedMaxRedeliveriesTimesMultipleSessions()
        {
            connection.RedeliveryPolicy.MaximumRedeliveries = 15;
            connection.RedeliveryPolicy.UseCollisionAvoidance = false;
            connection.RedeliveryPolicy.UseExponentialBackOff = false;

            connection.Start();

            PopulateDestination(1, destinationName);

            // Consume messages and Rollback transactions
            {
                int received = 0;

                ISession session = null;
                IDestination destination = null;
                IMessageConsumer consumer = null;
                ITextMessage msg = null;

                while(received <= connection.RedeliveryPolicy.MaximumRedeliveries)
                {
                    session = connection.CreateSession(AcknowledgementMode.Transactional);
                    destination = session.GetQueue(destinationName);
                    consumer = session.CreateConsumer(destination);
                    msg = (ITextMessage) consumer.Receive(TimeSpan.FromMilliseconds(6000000));
                    Assert.IsNotNull(msg);

                    if(received > 0)
                    {
                        Assert.IsTrue(msg.NMSRedelivered);
                        Assert.AreEqual(received, msg.Properties.GetLong("NMSXDeliveryCount") - 1);
                    }

                    Interlocked.Increment(ref received);

                    session.Rollback();
                    session.Close();
                }

                session = connection.CreateSession(AcknowledgementMode.Transactional);
                destination = session.GetQueue(destinationName);
                consumer = session.CreateConsumer(destination);
                msg = (ITextMessage) consumer.Receive(TimeSpan.FromMilliseconds(6000));
                Assert.IsNull(msg);
            }
        }