示例#1
0
        private MessagingEnvelope <TMessage> PrepareMessageEnvelope <TMessage>(TMessage message, Action <MessagingEnvelope> customizer = null)
        {
            var outgoingEnvelope = new MessagingEnvelope <TMessage>(new Dictionary <string, string>
            {
                [MessagingHeaders.MessageId]   = Guid.NewGuid().ToString(),
                [MessagingHeaders.PublishTime] = DateTime.Now.ToString(CultureInfo.InvariantCulture)
            }, message);

            if (message is IKeyProvider messageKeyProvider)
            {
                outgoingEnvelope.Headers[MessagingHeaders.StreamId] = messageKeyProvider.Key;
            }

            var sourceId = GetSourceId();

            if (!string.IsNullOrWhiteSpace(sourceId))
            {
                outgoingEnvelope.Headers[MessagingHeaders.Source] = sourceId;
            }

            customizer?.Invoke(outgoingEnvelope);

            outgoingEnvelope.SetHeader(MessagingHeaders.CorrelationId, Guid.NewGuid().ToString());

            return(outgoingEnvelope);
        }
示例#2
0
        public static void TransferHeaderTo(this MessagingEnvelope envelope, MessagingEnvelope destinationEnvelope, string header, bool overwrite = false)
        {
            if (!envelope.Headers.ContainsKey(header))
            {
                return;
            }

            destinationEnvelope.SetHeader(header, envelope.Headers[header], overwrite);
        }
        public string SerializeMessageEnvelope(MessagingEnvelope message, MessageSerDesOptions options = null)
        {
            var messageTypeId = _messageTypeRegistry.GetTypeId(message.Payload.GetType());

            message.SetHeader(MessagingHeaders.MessageType, messageTypeId, true);

            var json = JsonConvert.SerializeObject(message, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            return(json);
        }