public static void Execute(this IServiceBus bus, RoutingSlip routingSlip) { if (routingSlip.RanToCompletion()) bus.Publish(new RoutingSlipCompletedMessage(routingSlip.TrackingNumber, routingSlip.Variables)); else { IEndpoint endpoint = bus.GetEndpoint(routingSlip.GetNextExecuteAddress()); endpoint.Send(routingSlip, x => x.SetSourceAddress(bus.Endpoint.Address.Uri)); } }
public static async Task Execute(this IBus bus, RoutingSlip routingSlip) { if (routingSlip.RanToCompletion()) { DateTime timestamp = DateTime.UtcNow; TimeSpan duration = timestamp - routingSlip.CreateTimestamp; IRoutingSlipEventPublisher publisher = new RoutingSlipEventPublisher(bus, routingSlip); await publisher.PublishRoutingSlipCompleted(timestamp, duration, routingSlip.Variables); } else { ISendEndpoint endpoint = await bus.GetSendEndpoint(routingSlip.GetNextExecuteAddress()); await endpoint.Send(routingSlip, Pipe.New<SendContext>(x => x.UseExecute(context => context.SourceAddress = bus.Address))); } }