public void TestBrowseReceive()
{
using (IConnection connection = CreateConnection())
{
using (ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
{
IDestination destination = session.GetQueue("TestBrowseReceive");
connection.Start();
using(IMessageConsumer purger = session.CreateConsumer(destination))
{
// lets consume any outstanding messages from previous test runs
while(purger.Receive(TimeSpan.FromMilliseconds(1000)) != null)
{
}
purger.Close();
}
IMessage[] outbound = new IMessage[]{session.CreateTextMessage("First Message"),
session.CreateTextMessage("Second Message"),
session.CreateTextMessage("Third Message")};
IMessageProducer producer = session.CreateProducer(destination);
producer.Send(outbound[0]);
// create browser first
IQueueBrowser browser = session.CreateBrowser((IQueue)destination);
IEnumerator enumeration = browser.GetEnumerator();
// create consumer
IMessageConsumer consumer = session.CreateConsumer(destination);
// browse the first message
Assert.IsTrue(enumeration.MoveNext(), "should have received the first message");
Assert.AreEqual(((ITextMessage)outbound[0]).Text, ((ITextMessage)enumeration.Current).Text);
// Receive the first message.
Assert.AreEqual(((ITextMessage)outbound[0]).Text, ((ITextMessage)consumer.Receive(TimeSpan.FromMilliseconds(1000))).Text);
consumer.Close();
browser.Close();
producer.Close();
}
}
}