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(); }
public void Start() { if (IsRunning) { return; } IsRunning = true; var queuePath = MsmqEndpointParser.GetQueuePath(LocalEndpoint); _localQueue = GetOrCreateMessageQueue(queuePath); _localQueue.Formatter = _messageFormatter; StartListening(); }
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); } }
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)); }