protected void StartConsumerThread(string threadName)
{
ThreadStart startDelegate = () =>
{
try
{
Action<BasicDeliverEventArgs> handler = HandleMessageDeliveryInSameThread;
if (BatchSize > 1)
{
handler = HandleMessageDeliveryInSeperatedThread;
}
while (_status == ConsumerStatus.Active && !_channelShutdown)
{
WaitAndHandleMessageDelivery(handler);
}
}
catch (ThreadStateException tse)
{
_watcher.WarnFormat("The consumer thread {0} got a ThreadStateException: {1}, {2}", ConsumerTag, tse.Message, tse.StackTrace);
}
catch (ThreadInterruptedException)
{
_watcher.WarnFormat("The consumer thread {0} is interrupted", ConsumerTag);
}
catch (ThreadAbortException)
{
_watcher.WarnFormat("The consumer thread {0} is aborted", ConsumerTag);
}
};
var threadOne = new Thread(startDelegate)
{
Name = threadName,
Priority = ThreadPriority.AboveNormal,
IsBackground = true
};
threadOne.Start();
}