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

TestMessageRedelivedMaxRedeliveriesTimesSingleSession() private method

        public void TestMessageRedelivedMaxRedeliveriesTimesSingleSession()
        {
            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 = connection.CreateSession(AcknowledgementMode.Transactional);
                IDestination destination = session.GetQueue(destinationName);

                IMessageConsumer consumer = session.CreateConsumer(destination);
                ITextMessage msg = null;

                while(received <= connection.RedeliveryPolicy.MaximumRedeliveries)
                {
                    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();
                }

                msg = (ITextMessage) consumer.Receive(TimeSpan.FromMilliseconds(6000));
                Assert.IsNull(msg);

                session.Close();
            }
        }