QueueConnection[] sendersConnections = null;
try
{
Queue queue = new QueueRef(params.destinationName);
SynchronizationPoint startSynchro = new SynchronizationPoint();
receiverConnections = new QueueConnection[params.receiverCount];
for (int n = 0 ; n < receiverConnections.length ; n++)
receiverConnections[n] = createQueueConnection();
// Start receivers
QueueReceiverThread[] receivers = new QueueReceiverThread[params.receiverCount];
for (int n = 0 ; n < receivers.length ; n++)
receivers[n] = new QueueReceiverThread("Receiver"+(n+1),
startSynchro,
receiverConnections[n],
params.receiverTransacted,
params.acknowledgeMode,
queue,
null);
for (int n = 0 ; n < receivers.length ; n++)
{
receivers[n].start();
receivers[n].waitForStartup();
}
sendersConnections = new QueueConnection[params.senderCount];
for (int n = 0 ; n < sendersConnections.length ; n++)
sendersConnections[n] = createQueueConnection();
// Start senders
QueueSenderThread[] senders = new QueueSenderThread[params.senderCount];
int totalExpected = 0;
for (int n = 0 ; n < senders.length ; n++)
{
senders[n] = new QueueSenderThread("Sender"+(n+1),
msgFactory,
startSynchro,
sendersConnections[n],
params.senderTransacted,
params.messageCount/params.senderCount,
params.messageSize,
params.minDelay,
params.maxDelay,
queue,
params.deliveryMode,
params.priority,
params.timeToLive);
totalExpected += params.messageCount/params.senderCount;
}
for (int n = 0 ; n < senders.length ; n++)
{
senders[n].start();
senders[n].waitForStartup();
}
for (int n = 0 ; n < receiverConnections.length ; n++)
receiverConnections[n].start();
long startTime = System.currentTimeMillis();
startSynchro.reach();
// Wait for senders to complete
for (int n = 0 ; n < senders.length ; n++)
{
senders[n].join(TestUtils.TEST_TIMEOUT*1000);