/// <summary>
 /// Configure the routing slip activity event consumers on a receive endpoint
 /// </summary>
 /// <param name="configurator"></param>
 /// <param name="persister"></param>
 public static void RoutingSlipActivityEventConsumers(this IReceiveEndpointConfigurator configurator, IRoutingSlipEventPersister persister)
 {
     configurator.Consumer(() => new RoutingSlipActivityCompensatedConsumer(persister));
     configurator.Consumer(() => new RoutingSlipActivityCompletedConsumer(persister));
     configurator.Consumer(() => new RoutingSlipActivityFaultedConsumer(persister));
     configurator.Consumer(() => new RoutingSlipActivityCompensationFailedConsumer(persister));
 }
 /// <summary>
 /// Configure the routing slip activity event consumers on a receive endpoint
 /// </summary>
 /// <param name="configurator"></param>
 /// <param name="persister"></param>
 /// <param name="partitioner">Use a partitioner to reduce duplicate key errors</param>
 public static void RoutingSlipActivityEventConsumers(this IReceiveEndpointConfigurator configurator, IRoutingSlipEventPersister persister, IPartitioner partitioner)
 {
     configurator.Consumer(() => new RoutingSlipActivityCompensatedConsumer(persister),
         x => x.ConfigureMessage<RoutingSlipActivityCompensated>(y => y.UsePartitioner(partitioner, p => p.Message.TrackingNumber)));
     configurator.Consumer(() => new RoutingSlipActivityCompletedConsumer(persister),
         x => x.ConfigureMessage<RoutingSlipActivityCompleted>(y => y.UsePartitioner(partitioner, p => p.Message.TrackingNumber)));
     configurator.Consumer(() => new RoutingSlipActivityFaultedConsumer(persister),
         x => x.ConfigureMessage<RoutingSlipActivityFaulted>(y => y.UsePartitioner(partitioner, p => p.Message.TrackingNumber)));
     configurator.Consumer(() => new RoutingSlipActivityCompensationFailedConsumer(persister),
         x => x.ConfigureMessage<RoutingSlipActivityCompensationFailed>(y => y.UsePartitioner(partitioner, p => p.Message.TrackingNumber)));
 }