void DispatchOperationToTransport(IEnumerable <TransportOperation> operations) { foreach (var transportOperation in operations) { var deliveryOptions = transportOperation.Options.ToDeliveryOptions(); deliveryOptions.EnlistInReceiveTransaction = false; var message = new TransportMessage(transportOperation.MessageId, transportOperation.Headers) { Body = transportOperation.Body }; string ttbr; if (transportOperation.Options.TryGetValue("TimeToBeReceived", out ttbr)) { message.TimeToBeReceived = TimeSpan.Parse(ttbr); } //dispatch to transport if (transportOperation.Options["Operation"] != "Audit") { DispatchMessageToTransportBehavior.InvokeNative(deliveryOptions, message); } else { DefaultMessageAuditer.Audit(deliveryOptions as SendOptions, message); } } }
void DispatchOperationToTransport(IEnumerable <TransportOperation> operations) { foreach (var transportOperation in operations) { var deliveryOptions = transportOperation.Options.ToDeliveryOptions(); deliveryOptions.EnlistInReceiveTransaction = false; var message = new TransportMessage(transportOperation.MessageId, transportOperation.Headers) { Body = transportOperation.Body }; //dispatch to transport if (transportOperation.Options["Operation"] != "Audit") { DispatchMessageToTransportBehavior.InvokeNative(deliveryOptions, message); } else { DefaultMessageAuditer.Audit(deliveryOptions as SendOptions, message); } } }
public void Audit(SendOptions sendOptions, TransportMessage message) { var context = PipelineExecutor.CurrentContext; OutboxMessage currentOutboxMessage; if (context.TryGet(out currentOutboxMessage)) { message.RevertToOriginalBodyIfNeeded(); currentOutboxMessage.TransportOperations.Add(new TransportOperation(message.Id, sendOptions.ToTransportOperationOptions(true), message.Body, message.Headers)); } else { DefaultMessageAuditer.Audit(sendOptions, message); } }