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();
}
}