Ejemplo n.º 1
0
        private void SendToErrorQueue(Message obj)
        {
            var errorsEndpoint = new BusEndpoint(LocalEndpoint.MachineName, LocalEndpoint.QueueName + "_errors");
            var errorQueuePath = MsmqEndpointParser.GetQueuePath(errorsEndpoint);
            var errorQueue     = GetOrCreateMessageQueue(errorQueuePath);

            errorQueue.Send(obj);
            errorQueue.Dispose();
        }
Ejemplo n.º 2
0
        public void Start()
        {
            if (IsRunning)
            {
                return;
            }
            IsRunning = true;
            var queuePath = MsmqEndpointParser.GetQueuePath(LocalEndpoint);

            _localQueue           = GetOrCreateMessageQueue(queuePath);
            _localQueue.Formatter = _messageFormatter;
            StartListening();
        }
Ejemplo n.º 3
0
        private void SendReply(Message msmqMessage)
        {
            if (msmqMessage.ResponseQueue == null)
            {
                return;
            }
            var responseEndpoint = MsmqEndpointParser.GetEndpoint(msmqMessage.ResponseQueue);
            var reply            = _replyGenerators.GenerateReplyTo(msmqMessage.Body);

            if (reply != null)
            {
                Send(reply, responseEndpoint);
            }
        }
Ejemplo n.º 4
0
        private void Send(object message, BusEndpoint targetEndpoint)
        {
            var queuePath = MsmqEndpointParser.GetQueuePath(targetEndpoint);

            if (!MessageQueue.Exists(queuePath))
            {
                throw new TargetEndpointNotFoundException(string.Format("Unable to reach target endpoint {0}@{1}", targetEndpoint.QueueName, targetEndpoint.MachineName));
            }
            var remoteQueue = new MessageQueue(queuePath, QueueAccessMode.Send);

            if (!remoteQueue.CanWrite)
            {
                throw new UnableToSendMessageException(string.Format("Unable to send message to {0}@{1}", targetEndpoint.QueueName, targetEndpoint.MachineName));
            }
            remoteQueue.SendMessage(WrapInMsmqMessage(message));
        }