/// <summary>
        /// Redeliver uses the message scheduler to deliver the message to the queue at a future
        /// time. The delivery count is incremented.
        /// A message scheduler must be configured on the bus for redelivery to be enabled.
        /// </summary>
        /// <typeparam name="TInstance">The instance type</typeparam>
        /// <typeparam name="TData">The event data type</typeparam>
        /// <param name="configurator">The consume context of the message</param>
        /// <param name="configure">Configure the retry policy for the message redelivery</param>
        /// <returns></returns>
        public static IPipe <ConsumeContext <TData> > Redeliver <TInstance, TData>(this IMissingInstanceConfigurator <TInstance, TData> configurator,
                                                                                   Action <IMissingInstanceRedeliveryConfigurator <TInstance, TData> > configure)
            where TInstance : SagaStateMachineInstance
            where TData : class
        {
            var specification = new MissingInstanceRedeliveryConfigurator <TInstance, TData>(configurator);

            configure?.Invoke(specification);

            var result = BusConfigurationResult.CompileResults(specification.Validate());

            try
            {
                return(specification.Build());
            }
            catch (Exception ex)
            {
                throw new ConfigurationException(result, "The missing instance redelivery configuration was invalid", ex);
            }
        }
예제 #2
0
        public MissingInstanceRedeliveryConfigurator(IMissingInstanceConfigurator <TInstance, TData> configurator)
        {
            _configurator = configurator;

            _finalPipe = configurator.Discard();
        }