Convert() публичный статический Метод

Converts an MSMQ message to a Message.
public static Convert ( System m ) : Message
m System
Результат Message
        void IMessageTransport.SendMessage(Message message, Address targetAddress)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }
            if (targetAddress == null)
            {
                throw new ArgumentNullException("targetAddress");
            }

            var queuePath = MsmqUtilities.GetFullPath(targetAddress);

            try
            {
                using (var messageQueue = new MessageQueue(queuePath, QueueAccessMode.SendAndReceive))
                {
                    var toSend = MsmqUtilities.Convert(message);

                    if (message.ReplyToAddress != null)
                    {
                        toSend.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress(message.ReplyToAddress.ToString(), targetAddress.ToString()));
                    }

                    messageQueue.Send(toSend, MessageQueueTransactionType.Automatic);

                    message.Id = toSend.Id;
                }
            }
            catch (MessageQueueException ex)
            {
                if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound)
                {
                    throw new EventSourcingException("消息队列未找到: [{0}]", targetAddress);
                }
                else
                {
                    throw new EventSourcingException("发送消息到队列时遇到异常,队列地址:{0},异常详情:{1}", targetAddress, ex);
                }
            }
            catch (Exception ex)
            {
                throw new EventSourcingException("发送消息到队列时遇到异常,队列地址:{0},异常详情:{1}", targetAddress, ex);
            }
        }
Пример #2
0
        void IMessageTransport.SendMessage(Message message, Address targetAddress)
        {
            if (message == null)
            {
                throw new ArgumentNullException("message");
            }
            if (targetAddress == null)
            {
                throw new ArgumentNullException("targetAddress");
            }

            var queuePath = MsmqUtilities.GetFullPath(targetAddress);

            try
            {
                using (var messageQueue = new MessageQueue(queuePath, QueueAccessMode.SendAndReceive))
                {
                    var msmqMessage = MsmqUtilities.Convert(message);
                    messageQueue.Send(msmqMessage, MessageQueueTransactionType.Automatic);
                    message.Id = msmqMessage.Id;
                }
            }
            catch (MessageQueueException ex)
            {
                if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound)
                {
                    _logger.Error(string.Format("消息队列未找到: [{0}]", targetAddress), ex);
                    throw;
                }
                else
                {
                    _logger.Error(string.Format("发送消息到队列时遇到异常,队列地址:{0}", targetAddress), ex);
                    throw;
                }
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("发送消息到队列时遇到异常,队列地址:{0}", targetAddress), ex);
                throw;
            }
        }
Пример #3
0
        Message IMessageTransport.Receive()
        {
            try
            {
                var waitSesonds = TimeSpan.FromSeconds(SecondsToWaitForMessage);
                if (_messageQueue.Peek(waitSesonds) != null)
                {
                    var message = _messageQueue.Receive(waitSesonds, MessageQueueTransactionType.Automatic);
                    if (message != null)
                    {
                        return(MsmqUtilities.Convert(message));
                    }
                }
                return(null);
            }
            catch (MessageQueueException ex)
            {
                if (ex.MessageQueueErrorCode == MessageQueueErrorCode.IOTimeout)
                {
                    return(null);
                }

                if (ex.MessageQueueErrorCode == MessageQueueErrorCode.AccessDenied)
                {
                    string 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.",
                        _messageQueue.QueueName,
                        WindowsIdentity.GetCurrent() != null ? WindowsIdentity.GetCurrent().Name : "unknown user");
                    _logger.Fatal(errorException);
                    throw new InvalidOperationException(errorException, ex);
                }

                _logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("接收队列消息时遇到异常,队列地址:{0}", _messageQueue.QueueName), ex);
                throw;
            }
        }