public static void Convert(TransportMessage message, IBytesMessage toSend, IMessageSerializer serializer) { byte[] body; if (message.Body == null && message.BodyStream != null) { body = message.BodyStream.ToBytes(); } else { var stream = new MemoryStream(); serializer.Serialize(message.Body, stream); body = stream.ToBytes(); } toSend.WriteBytes(body); // TODO: clarify usage of JMSCorrelationID toSend.JMSCorrelationID = message.CorrelationId; toSend.JMSDeliveryMode = message.Recoverable ? DeliveryMode.Persistent : DeliveryMode.NonPersistent; toSend.SetStringProperty(HEADER_RETURNADDRESS, message.ReturnAddress); toSend.SetStringProperty(HEADER_IDFORCORRELATION, message.IdForCorrelation); toSend.SetStringProperty(HEADER_WINDOWSIDENTITYNAME, message.WindowsIdentityName); toSend.SetIntProperty(HEADER_MESSAGEINTENT, (int) message.MessageIntent); //TODO: set message expiration //toSend.JMSReplyTo = new Destination message.ReplyToAddress; //if (message.TimeToBeReceived < MessageQueue.InfiniteTimeout) //toSend.JMSExpiration = (long) UTCNow.message.TimeToBeReceived.TotalMilliseconds; if (message.Headers == null) message.Headers = new List<HeaderInfo>(); var nsbHeaderKeys = new List<string>(); foreach (var keyValue in message.Headers) { toSend.SetStringProperty(keyValue.Key.ToXmsFriendly(), keyValue.Value); nsbHeaderKeys.Add(keyValue.Key.ToXmsFriendly()); } toSend.SetStringProperty(HEADER_NBSKEYS, WrapKeys(nsbHeaderKeys)); }
public static void Convert(TransportMessage message, IBytesMessage toSend) { if (message.Body != null) toSend.WriteBytes(message.Body); // TODO: clarify usage of JMSCorrelationID if (message.CorrelationId != null) toSend.JMSCorrelationID = message.CorrelationId; if (message.ReplyToAddress != null) toSend.SetStringProperty(HEADER_RETURNADDRESS, message.ReplyToAddress.ToString()); if (message.IdForCorrelation != null) toSend.SetStringProperty(HEADER_IDFORCORRELATION, message.IdForCorrelation ?? string.Empty); toSend.JMSDeliveryMode = message.Recoverable ? DeliveryMode.Persistent : DeliveryMode.NonPersistent; //toSend.SetStringProperty(HEADER_WINDOWSIDENTITYNAME, message.WindowsIdentityName); toSend.SetIntProperty(HEADER_MESSAGEINTENT, (int)message.MessageIntent); //TODO: set message expiration //toSend.JMSReplyTo = new Destination message.ReplyToAddress; //if (message.TimeToBeReceived < MessageQueue.InfiniteTimeout) //toSend.JMSExpiration = (long) UTCNow.message.TimeToBeReceived.TotalMilliseconds; //if (message.TimeToBeReceived < MessageQueue.InfiniteTimeout) //toSend.TimeToBeReceived = message.TimeToBeReceived; if (message.Headers == null) message.Headers = new Dictionary<string, string>(); if (!message.Headers.ContainsKey("CorrId")) message.Headers.Add("CorrId", null); if (string.IsNullOrEmpty(message.Headers["CorrId"])) message.Headers["CorrId"] = message.IdForCorrelation ?? string.Empty; var nsbHeaderKeys = new List<string>(); foreach (var keyValue in message.Headers) { toSend.SetStringProperty(keyValue.Key.ToXmsFriendly(), keyValue.Value); nsbHeaderKeys.Add(keyValue.Key.ToXmsFriendly()); } toSend.SetStringProperty(HEADER_NBSKEYS, WrapKeys(nsbHeaderKeys)); }