public void TestSendRollback()
{
IMessage[] outbound = new IMessage[]
{session.CreateTextMessage("First IMessage"), session.CreateTextMessage("Second IMessage")};
// sends a message
BeginTx();
producer.Send(outbound[0]);
CommitTx();
// sends a message that gets rollbacked
BeginTx();
producer.Send(session.CreateTextMessage("I'm going to get rolled back."));
RollbackTx();
// sends a message
BeginTx();
producer.Send(outbound[1]);
CommitTx();
// receives the first message
BeginTx();
LinkedList<IMessage> messages = new LinkedList<IMessage>();
IMessage message = consumer.Receive(TimeSpan.FromMilliseconds(1000));
messages.AddLast(message);
// receives the second message
message = consumer.Receive(TimeSpan.FromMilliseconds(5000));
messages.AddLast(message);
// validates that the rollbacked was not consumed
CommitTx();
IMessage[] inbound = new IMessage[messages.Count];
messages.CopyTo(inbound, 0);
AssertTextMessagesEqual(outbound, inbound, "Rollback did not work.");
}