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