protected virtual ICommand ReadMessage(StompFrame frame) { frame.RemoveProperty(PropertyKeys.Transformation); var message = new BytesMessage { Content = frame.Content }; // Remove any receipt header we might have attached if the outbound command was // sent with response required set to true frame.RemoveProperty(PropertyKeys.Receipt); // Clear any attached content length headers as they aren't needed anymore and can // clutter the Message Properties. frame.RemoveProperty(PropertyKeys.ContentLength); message.Type = frame.RemoveProperty(PropertyKeys.Type); message.Destination = Destination.ConvertToDestination(frame.RemoveProperty(PropertyKeys.Destination), SkipDestinationNameFormatting); message.ReplyTo = Destination.ConvertToDestination(frame.RemoveProperty(PropertyKeys.ReplyTo), SkipDestinationNameFormatting); message.TargetConsumerId = new(frame.RemoveProperty(PropertyKeys.Subscription)); message.CorrelationId = frame.RemoveProperty(PropertyKeys.CorrelationId); message.MessageId = new(frame.RemoveProperty(PropertyKeys.MessageId)); message.Persistent = StompHelper.ToBool(frame.RemoveProperty(PropertyKeys.Persistent), false); // If it came from NMS.Stomp we added this header to ensure its reported on the // receiver side. if (frame.HasProperty(PropertyKeys.NmsxDeliveryMode)) { message.Persistent = StompHelper.ToBool(frame.RemoveProperty(PropertyKeys.NmsxDeliveryMode), false); } if (frame.HasProperty(PropertyKeys.Priority)) { message.Priority = Byte.Parse(frame.RemoveProperty(PropertyKeys.Priority)); } if (frame.HasProperty(PropertyKeys.TimeStamp)) { message.Timestamp = Int64.Parse(frame.RemoveProperty(PropertyKeys.TimeStamp)); } if (frame.HasProperty(PropertyKeys.Expires)) { message.Expiration = Int64.Parse(frame.RemoveProperty(PropertyKeys.Expires)); } if (frame.RemoveProperty(PropertyKeys.Redelivered) != null) { message.RedeliveryCounter = 1; } // now lets add the generic headers foreach (var key in frame.Properties.Keys) { var value = frame.Properties[key]; message.Headers[key] = value; } return(new MessageDispatch(message.TargetConsumerId, message.Destination, message, message.RedeliveryCounter)); }
protected virtual ICommand ReadMessage(StompFrame frame) { Message message; frame.RemoveProperty("transformation"); if (frame.HasProperty("content-length")) { message = new BytesMessage { Content = frame.Content } } ; else { message = new TextMessage(Encoding.GetString(frame.Content, 0, frame.Content.Length)); } // Remove any receipt header we might have attached if the outbound command was // sent with response required set to true frame.RemoveProperty("receipt"); // Clear any attached content length headers as they aren't needed anymore and can // clutter the Message Properties. frame.RemoveProperty("content-length"); message.Type = frame.RemoveProperty("type"); message.Destination = Destination.ConvertToDestination(frame.RemoveProperty("destination")); message.ReplyTo = Destination.ConvertToDestination(frame.RemoveProperty("reply-to")); message.TargetConsumerId = new ConsumerId(frame.RemoveProperty("subscription")); message.CorrelationId = frame.RemoveProperty("correlation-id"); message.MessageId = new MessageId(frame.RemoveProperty("message-id")); message.Persistent = StompHelper.ToBool(frame.RemoveProperty("persistent"), false); // If it came from NMS.Stomp we added this header to ensure its reported on the // receiver side. if (frame.HasProperty("NMSXDeliveryMode")) { message.Persistent = StompHelper.ToBool(frame.RemoveProperty("NMSXDeliveryMode"), false); } if (frame.HasProperty("priority")) { message.Priority = Byte.Parse(frame.RemoveProperty("priority")); } if (frame.HasProperty("timestamp")) { message.Timestamp = Int64.Parse(frame.RemoveProperty("timestamp")); } if (frame.HasProperty("expires")) { message.Expiration = Int64.Parse(frame.RemoveProperty("expires")); } if (frame.RemoveProperty("redelivered") != null) { message.RedeliveryCounter = 1; } // now lets add the generic headers foreach (var key in frame.Properties.Keys) { var value = frame.Properties[key]; message.Headers[key] = value; } var dispatch = new MessageDispatch { Message = message, ConsumerId = message.TargetConsumerId, Destination = message.Destination, RedeliveryCounter = message.RedeliveryCounter }; return(dispatch); }