public void TestTmpQueueWorksUnderLoad()
{
int count = 500;
int dataSize = 1024;
ArrayList list = new ArrayList(count);
ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
ITemporaryQueue queue = session.CreateTemporaryQueue();
IBytesMessage message;
IBytesMessage message2;
IMessageProducer producer = session.CreateProducer(queue);
producer.DeliveryMode = MsgDeliveryMode.NonPersistent;
byte[] srcdata = new byte[dataSize];
srcdata[0] = (byte) 'B';
srcdata[1] = (byte) 'A';
srcdata[2] = (byte) 'D';
srcdata[3] = (byte) 'W';
srcdata[4] = (byte) 'O';
srcdata[5] = (byte) 'L';
srcdata[6] = (byte) 'F';
for(int i = 0; i < count; i++)
{
message = session.CreateBytesMessage();
message.WriteBytes(srcdata);
message.Properties.SetInt("c", i);
producer.Send(message);
list.Add(message);
}
connection.Start();
byte[] data = new byte[dataSize];
byte[] data2 = new byte[dataSize];
IMessageConsumer consumer = session.CreateConsumer(queue);
for(int i = 0; i < count; i++)
{
message2 = consumer.Receive(TimeSpan.FromMilliseconds(2000)) as IBytesMessage;
Assert.IsNotNull(message2);
Assert.AreEqual(i, message2.Properties.GetInt("c"));
message = list[i] as IBytesMessage;
Assert.IsNotNull(message);
message.Reset();
message.ReadBytes(data);
message2.ReadBytes(data2);
Assert.AreEqual(data, data2);
}
}