/// <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();
        }
Example #2
0
        /// <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)));
        }
Example #3
0
    /// <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));
    }