void RaiseCriticalException(MessageQueueException messageQueueException) { var errorException = string.Format("Failed to peek messages from [{0}].", queue.FormatName); if (messageQueueException.MessageQueueErrorCode == MessageQueueErrorCode.AccessDenied) { errorException = string.Format( "Do not have permission to access queue [{0}]. Make sure that the current user [{1}] has permission to Send, Receive, and Peek from this queue.", queue.FormatName, GetUserName()); } circuitBreaker.Execute( () => Configure.Instance.RaiseCriticalError("Error in receiving messages.", new InvalidOperationException(errorException, messageQueueException))); }
protected void HandleInboundMessageQueueException(MessageQueueException ex) { switch (ex.MessageQueueErrorCode) { case MessageQueueErrorCode.IOTimeout: break; case MessageQueueErrorCode.ServiceNotAvailable: throw new InvalidConnectionException(_address.Uri,"The message queuing service is not available, pausing for timeout period", ex); case MessageQueueErrorCode.QueueNotAvailable: case MessageQueueErrorCode.AccessDenied: case MessageQueueErrorCode.QueueDeleted: throw new InvalidConnectionException(_address.Uri, "The message queue was not available", ex); case MessageQueueErrorCode.QueueNotFound: case MessageQueueErrorCode.IllegalFormatName: case MessageQueueErrorCode.MachineNotFound: throw new InvalidConnectionException(_address.Uri, "The message queue was not found or is improperly named", ex); case MessageQueueErrorCode.MessageAlreadyReceived: // we are competing with another consumer, no reason to report an error since // the message has already been handled. if (_log.IsDebugEnabled) _log.Debug( "The message was removed from the queue before it could be received. This could be the result of another service reading from the same queue."); break; case MessageQueueErrorCode.InvalidHandle: case MessageQueueErrorCode.StaleHandle: throw new InvalidConnectionException(_address.Uri,"The message queue handle is stale or no longer valid due to a restart of the message queuing service", ex); default: throw new InvalidConnectionException(_address.Uri, "There was a problem communicating with the message queue", ex); } }
void HandleOutboundMessageQueueException(MessageQueueException ex) { _connection.Disconnect(); switch (ex.MessageQueueErrorCode) { case MessageQueueErrorCode.IOTimeout: break; case MessageQueueErrorCode.ServiceNotAvailable: if (_log.IsErrorEnabled) _log.Error("The message queuing service is not available, pausing for timeout period", ex); break; case MessageQueueErrorCode.QueueNotAvailable: case MessageQueueErrorCode.AccessDenied: case MessageQueueErrorCode.QueueDeleted: if (_log.IsErrorEnabled) _log.Error("The message queue was not available: " + _connection.FormatName, ex); break; case MessageQueueErrorCode.QueueNotFound: case MessageQueueErrorCode.IllegalFormatName: case MessageQueueErrorCode.MachineNotFound: if (_log.IsErrorEnabled) _log.Error("The message queue was not found or is improperly named: " + _address.InboundFormatName, ex); break; case MessageQueueErrorCode.InvalidHandle: case MessageQueueErrorCode.StaleHandle: if (_log.IsErrorEnabled) _log.Error( "The message queue handle is stale or no longer valid due to a restart of the message queuing service: " + _address.InboundFormatName, ex); break; default: if (_log.IsErrorEnabled) _log.Error("There was a problem communicating with the message queue: " + _address.InboundFormatName, ex); break; } }