void AppendMessageToState(IOutgoingLogicalMessageContext context)
    {
        if (!context.Extensions.TryGet(out SagaUpdatedMessage sagaUpdatedMessage))
        {
            return;
        }

        var logicalMessage = context.Message;

        if (logicalMessage == null)
        {
            //this can happen on control messages
            return;
        }

        var sagaResultingMessage = new SagaChangeOutput
                                   (
            resultingMessageId: context.MessageId,
            messageType: logicalMessage.MessageType.ToString(),
            destination: context.GetDestinationForUnicastMessages(),
            messageIntent: context.MessageIntent()
                                   );

        sagaUpdatedMessage.ResultingMessages.Add(sagaResultingMessage);
    }
Ejemplo n.º 2
0
    void AppendMessageToState(IOutgoingLogicalMessageContext context)
    {
        if (!context.Extensions.TryGet(out sagaUpdatedMessage))
        {
            return;
        }

        var logicalMessage = context.Message;

        if (logicalMessage == null)
        {
            //this can happen on control messages
            return;
        }

        var sagaResultingMessage = new SagaChangeOutput
        {
            ResultingMessageId = context.MessageId,
            MessageType        = logicalMessage.MessageType.ToString(),
            Destination        = GetDestinationForUnicastMessages(context),
            MessageIntent      = context.Headers[Headers.MessageIntent]
        };

        sagaUpdatedMessage.ResultingMessages.Add(sagaResultingMessage);
    }
Ejemplo n.º 3
0
        void AppendMessageToState(OutgoingContext context)
        {
            if (!context.TryGet(out sagaUpdatedMessage))
            {
                return;
            }
            var logicalMessage = context.OutgoingLogicalMessage;

            if (logicalMessage == null)
            {
                //this can happen on control messages
                return;
            }

            var sendOptions = context.DeliveryOptions as SendOptions;

            if (sendOptions != null)
            {
                var sagaResultingMessage = new SagaChangeOutput
                {
                    ResultingMessageId = context.OutgoingMessage.Id,
                    TimeSent           = DateTimeExtensions.ToUtcDateTime(context.OutgoingMessage.Headers[Headers.TimeSent]),
                    MessageType        = logicalMessage.MessageType.ToString(),
                    DeliveryDelay      = sendOptions.DelayDeliveryWith,
                    DeliveryAt         = sendOptions.DeliverAt,
                    Destination        = sendOptions.Destination.ToString(),
                    Intent             = "Send" //TODO: How to get the proper message intent!?
                };
                sagaUpdatedMessage.ResultingMessages.Add(sagaResultingMessage);
            }

            if (context.DeliveryOptions is PublishOptions)
            {
                var sagaResultingMessage = new SagaChangeOutput
                {
                    ResultingMessageId = context.OutgoingMessage.Id,
                    TimeSent           = DateTimeExtensions.ToUtcDateTime(context.OutgoingMessage.Headers[Headers.TimeSent]),
                    MessageType        = logicalMessage.MessageType.ToString(),
                    //TODO: Can we remove the DeliveryDelay and DeliveryAt here??
                    //DeliveryDelay = publishOptions.DelayDeliveryWith,
                    //DeliveryAt = publishOptions.DeliverAt,
                    //Destination = GetDestination(context),
                    Intent = "Publish" //TODO: get the message intent the right way!
                };
                sagaUpdatedMessage.ResultingMessages.Add(sagaResultingMessage);
            }
        }
        void AppendMessageToState(IOutgoingLogicalMessageContext context)
        {
            var logicalMessage = context.Message;

            if (logicalMessage == null)
            {
                //this can happen on control messages
                return;
            }

            if (!context.Extensions.TryGet(out SagaUpdatedMessage sagaUpdatedMessage))
            {
                return;
            }

            TimeSpan?      deliveryDelay      = null;
            DateTimeOffset?doNotDeliverBefore = null;

            if (context.Extensions.TryGet(out DispatchProperties properties))
            {
                deliveryDelay      = properties.DelayDeliveryWith?.Delay;
                doNotDeliverBefore = properties.DoNotDeliverBefore?.At;
            }

            var sagaResultingMessage = new SagaChangeOutput
            {
                ResultingMessageId = context.MessageId,
                TimeSent           = DateTime.UtcNow,
                MessageType        = logicalMessage.MessageType.ToString(),
                DeliveryDelay      = deliveryDelay,
                DeliveryAt         = doNotDeliverBefore?.UtcDateTime,
                Destination        = GetDestinationForUnicastMessages(context),
                Intent             = context.Headers[Headers.MessageIntent]
            };

            sagaUpdatedMessage.ResultingMessages.Add(sagaResultingMessage);
        }