Ejemplo n.º 1
0
 internal LogicalMessage(MessageMetadata metadata, object message, Dictionary<string, string> headers, LogicalMessageFactory factory)
 {
     this.factory = factory;
     Instance = message;
     Metadata = metadata;
     Headers = headers;
 }
Ejemplo n.º 2
0
 internal LogicalMessage(MessageMetadata metadata, object message, Dictionary <string, string> headers, LogicalMessageFactory factory)
 {
     this.factory = factory;
     Instance     = message;
     Metadata     = metadata;
     Headers      = headers;
 }
Ejemplo n.º 3
0
        List <LogicalMessage> Extract(TransportMessage physicalMessage)
        {
            if (physicalMessage.Body == null || physicalMessage.Body.Length == 0)
            {
                return(new List <LogicalMessage>());
            }

            var messageMetadata = MessageMetadataRegistry.GetMessageTypes(physicalMessage);

            using (var stream = new MemoryStream(physicalMessage.Body))
            {
                var messageTypesToDeserialize = messageMetadata.Select(metadata => metadata.MessageType).ToList();

                return(MessageSerializer.Deserialize(stream, messageTypesToDeserialize)
                       .Select(x => LogicalMessageFactory.Create(x.GetType(), x, physicalMessage.Headers))
                       .ToList());
            }
        }
        List <LogicalMessage> Extract(TransportMessage physicalMessage)
        {
            if (physicalMessage.Body == null || physicalMessage.Body.Length == 0)
            {
                return(new List <LogicalMessage>());
            }

            string messageTypeIdentifier;
            var    messageMetadata = new List <MessageMetadata>();

            if (physicalMessage.Headers.TryGetValue(Headers.EnclosedMessageTypes, out messageTypeIdentifier))
            {
                foreach (var messageTypeString in messageTypeIdentifier.Split(';'))
                {
                    if (DoesTypeHaveImplAddedByVersion3(messageTypeString))
                    {
                        continue;
                    }

                    var metadata = MessageMetadataRegistry.GetMessageMetadata(messageTypeString);
                    if (metadata == null)
                    {
                        continue;
                    }
                    messageMetadata.Add(metadata);
                }

                if (messageMetadata.Count == 0 && physicalMessage.MessageIntent != MessageIntentEnum.Publish)
                {
                    log.WarnFormat("Could not determine message type from message header '{0}'. MessageId: {1}", messageTypeIdentifier, physicalMessage.Id);
                }
            }

            using (var stream = new MemoryStream(physicalMessage.Body))
            {
                var messageTypesToDeserialize = messageMetadata.Select(metadata => metadata.MessageType).ToList();

                return(MessageSerializer.Deserialize(stream, messageTypesToDeserialize)
                       .Select(x => LogicalMessageFactory.Create(x.GetType(), x, physicalMessage.Headers))
                       .ToList());
            }
        }
Ejemplo n.º 5
0
 internal LogicalMessage(Dictionary<string, string> headers, LogicalMessageFactory factory)
 {
     this.factory = factory;
     Metadata = new MessageMetadata();
     Headers = headers;
 }
Ejemplo n.º 6
0
 internal LogicalMessage(Dictionary <string, string> headers, LogicalMessageFactory factory)
 {
     this.factory = factory;
     Metadata     = new MessageMetadata();
     Headers      = headers;
 }