public static GetReturnAddress ( string replyToString, string destinationMachine ) : string | ||
replyToString | string | |
destinationMachine | string | |
Результат | string |
public void Should_fetch_the_replytoaddress_from_responsequeue_for_backwards_compatibility() { var transportMessage = new TransportMessage(); var message = MsmqUtilities.Convert(transportMessage); message.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress("local", "destination")); var result = MsmqUtilities.Convert(message); Assert.AreEqual("local@" + Environment.MachineName, result.Headers[Headers.ReplyToAddress]); }
void ISendMessages.Send(TransportMessage message, Address address) { var queuePath = MsmqUtilities.GetFullPath(address); try { using (var q = new MessageQueue(queuePath, QueueAccessMode.Send)) { var toSend = MsmqUtilities.Convert(message); toSend.UseDeadLetterQueue = UseDeadLetterQueue; toSend.UseJournalQueue = UseJournalQueue; if (message.ReplyToAddress != null) { toSend.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress(message.ReplyToAddress.ToString(), address.ToString())); } q.Send(toSend, GetTransactionTypeForSend()); message.Id = toSend.Id; } } catch (MessageQueueException ex) { string msg = string.Empty; if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound) { if (address == null) { msg = "Failed to send message."; } else { msg = string.Format("Failed to send message to address: {0}@{1}", address.Queue, address.Machine); } } throw new QueueNotFoundException(address, msg, ex); } catch (Exception ex) { if (address == null) { throw new FailedToSendMessageException("Failed to send message.", ex); } else { throw new FailedToSendMessageException(string.Format("Failed to send message to address: {0}@{1}", address.Queue, address.Machine), ex); } } }
void ISendMessages.Send(TransportMessage message, Address address) { var queuePath = MsmqUtilities.GetFullPath(address); try { using (var q = new MessageQueue(queuePath, false, true, QueueAccessMode.Send)) { using (Message toSend = MsmqUtilities.Convert(message)) { toSend.UseDeadLetterQueue = UseDeadLetterQueue; toSend.UseJournalQueue = UseJournalQueue; if (message.ReplyToAddress != null) { toSend.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress(message.ReplyToAddress.ToString(), address.ToString())); } q.Send(toSend, GetTransactionTypeForSend()); message.Id = toSend.Id; } } } catch (MessageQueueException ex) { if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound) { var msg = address == null ? "Failed to send message. Target address is null." : string.Format("Failed to send message to address: [{0}]", address); throw new QueueNotFoundException(address, msg, ex); } ThrowFailedToSendException(address, ex); } catch (Exception ex) { ThrowFailedToSendException(address, ex); } }
void ISendMessages.Send(TransportMessage message, Address address) { var queuePath = MsmqUtilities.GetFullPath(address); using (var q = new MessageQueue(queuePath, QueueAccessMode.Send)) { var toSend = MsmqUtilities.Convert(message); toSend.UseDeadLetterQueue = UseDeadLetterQueue; toSend.UseJournalQueue = UseJournalQueue; if (message.ReplyToAddress != null) { toSend.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress(message.ReplyToAddress.ToString(), address.ToString())); } try { q.Send(toSend, GetTransactionTypeForSend()); } catch (MessageQueueException ex) { if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound) { throw new QueueNotFoundException { Queue = address } } ; throw; } message.Id = toSend.Id; } }
public void Send(TransportMessage message, string destination) { var address = MsmqUtilities.GetFullPath(destination); using (var q = new MessageQueue(address, QueueAccessMode.Send)) { var toSend = new Message(); if (message.Body != null) { toSend.BodyStream = new MemoryStream(message.Body); } if (message.CorrelationId != null) { toSend.CorrelationId = message.CorrelationId; } toSend.Recoverable = message.Recoverable; toSend.UseDeadLetterQueue = UseDeadLetterQueue; toSend.UseJournalQueue = UseJournalQueue; if (!string.IsNullOrEmpty(message.ReturnAddress)) { toSend.ResponseQueue = new MessageQueue(MsmqUtilities.GetReturnAddress(message.ReturnAddress, destination)); } if (message.TimeToBeReceived < MessageQueue.InfiniteTimeout) { toSend.TimeToBeReceived = message.TimeToBeReceived; } if (message.Headers == null) { message.Headers = new Dictionary <string, string>(); } if (!message.Headers.ContainsKey(HeaderKeys.IDFORCORRELATION)) { message.Headers.Add(HeaderKeys.IDFORCORRELATION, null); } if (String.IsNullOrEmpty(message.Headers[HeaderKeys.IDFORCORRELATION])) { message.Headers[HeaderKeys.IDFORCORRELATION] = message.IdForCorrelation; } using (var stream = new MemoryStream()) { headerSerializer.Serialize(stream, message.Headers.Select(pair => new HeaderInfo { Key = pair.Key, Value = pair.Value }).ToList()); toSend.Extension = stream.GetBuffer(); } toSend.AppSpecific = (int)message.MessageIntent; try { q.Send(toSend, GetTransactionTypeForSend()); } catch (MessageQueueException ex) { if (ex.MessageQueueErrorCode == MessageQueueErrorCode.QueueNotFound) { throw new QueueNotFoundException { Queue = destination } } ; throw; } message.Id = toSend.Id; } }