/// <summary> /// Executes the step and sets the default headers /// </summary> public async Task Process(OutgoingStepContext context, Func <Task> next) { var message = context.Load <Message>(); var headers = message.Headers; if (!headers.ContainsKey(Headers.MessageId)) { headers[Headers.MessageId] = Guid.NewGuid().ToString(); } if (_hasOwnAddress && !headers.ContainsKey(Headers.ReturnAddress)) { headers[Headers.ReturnAddress] = _returnAddress; } headers[Headers.SentTime] = _rebusTime.Now.ToString("O"); if (_hasOwnAddress) { headers[Headers.SenderAddress] = _senderAddress; } else { headers.Remove(Headers.SenderAddress); } if (!headers.ContainsKey(Headers.Type)) { var messageType = message.Body.GetType(); headers[Headers.Type] = _messageTypeNameConvention.GetTypeName(messageType); } await next(); }
/// <summary> /// Serializes the given <see cref="Message"/> into a <see cref="TransportMessage"/> /// </summary> public Task <TransportMessage> Serialize(Message message) { var bytes = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(message.Body, message.Body.GetType(), _settings); var headers = message.Headers.Clone(); headers[Headers.ContentType] = _encodingHeaderValue; if (!headers.ContainsKey(Headers.Type)) { headers[Headers.Type] = _messageTypeNameConvention.GetTypeName(message.Body.GetType()); } return(Task.FromResult(new TransportMessage(headers, bytes))); }
/// <summary> /// Serializes the given <see cref="Message"/> into a <see cref="TransportMessage"/> /// </summary> public async Task <TransportMessage> Serialize(Message message) { var jsonText = JsonConvert.SerializeObject(message.Body, _settings); var bytes = _encoding.GetBytes(jsonText); var headers = message.Headers.Clone(); headers[Headers.ContentType] = _encodingHeaderValue; if (!headers.ContainsKey(Headers.Type)) { headers[Headers.Type] = _messageTypeNameConvention.GetTypeName(message.Body.GetType()); } return(new TransportMessage(headers, bytes)); }