private void TryProcessIncomingMessage()
{
using (var context = _messageContextFactory.Create())
{
try
{
DoTry(context);
}
catch (OperationCanceledException)
{
_rollbackMessage.Rollback(context);
}
// ReSharper disable once UncatchableException
catch (ThreadAbortException)
{
_rollbackMessage.Rollback(context);
}
catch (PoisonMessageException exception)
{
_receivePoisonMessage.Handle(context, exception);
}
catch (ReceiveMessageException e)
{
//an exception occurred trying to get the message from the transport
_log.ErrorException("An error has occurred while receiving a message from the transport", e,
null);
_seriousExceptionProcessBackOffHelper.Value.Wait();
}
catch
{
_rollbackMessage.Rollback(context);
throw;
}
}
}