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); }
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); }