public void TestLastMessageAcked()
{
ISession session = connection.CreateSession(AcknowledgementMode.IndividualAcknowledge);
ITemporaryQueue queue = session.CreateTemporaryQueue();
IMessageProducer producer = session.CreateProducer(queue);
ITextMessage msg1 = session.CreateTextMessage("msg1" + Guid.NewGuid().ToString());
ITextMessage msg2 = session.CreateTextMessage("msg2" + Guid.NewGuid().ToString());
ITextMessage msg3 = session.CreateTextMessage("msg3" + Guid.NewGuid().ToString());
producer.Send(msg1);
producer.Send(msg2);
producer.Send(msg3);
// Consume the message...
IMessageConsumer consumer = session.CreateConsumer(queue);
ITextMessage ackmsg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
Assert.IsNotNull(ackmsg);
Assert.AreEqual(msg1.Text,ackmsg.Text);
ackmsg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
Assert.IsNotNull(ackmsg);
Assert.AreEqual(msg2.Text,ackmsg.Text);
ackmsg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
Assert.IsNotNull(ackmsg);
Assert.AreEqual(msg3.Text,ackmsg.Text);
ackmsg.Acknowledge();
// Reset the session.
session.Close();
session = connection.CreateSession(AcknowledgementMode.IndividualAcknowledge);
// Attempt to Consume the message...
consumer = session.CreateConsumer(queue);
ackmsg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
Assert.IsNotNull(ackmsg);
Assert.AreEqual(msg1.Text,ackmsg.Text);
ackmsg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
Assert.IsNotNull(ackmsg);
Assert.AreEqual(msg2.Text,ackmsg.Text);
IMessage msg = consumer.Receive(TimeSpan.FromMilliseconds(1000));
Assert.IsNull(msg);
session.Close();
}