protected BaseCourierContext(ConsumeContext <RoutingSlip> consumeContext) : base(consumeContext) { if (consumeContext == null) { throw new ArgumentNullException(nameof(consumeContext)); } _timer = Stopwatch.StartNew(); var newId = NewId.Next(); _executionId = newId.ToGuid(); _timestamp = newId.Timestamp; RoutingSlip = new SanitizedRoutingSlip(consumeContext); Publisher = new RoutingSlipEventPublisher(this, RoutingSlip); }
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))); } }