Difiriendo mensajes con nservicebus

Estoy tratando con nServiceBus y quiero volver a intentarlo y un mensaje en otro momento cuando uno falla. He oído hablar de Bus.Defer () pero mi entendimiento de esto es limitado.

Tengo un sistema que comprueba los códigos de stock. Verifica cuando se llama al comando y reprograma otra verificación después de las 8 pm.

Tengo CheckCurrentProductA AvailabilityCommand que ejecuta una función que verifica códigos de stock. Esto es manejado por CurrentProductA AvailabilityRequestHandler.

Si falla, entonces ejecuto ScheduleCheckStockA disponer de un control de disponibilidad con el código de stock, esto se maneja mediante ScheduleCheckStockCodeA disponer de un procesador.

Entonces ejecuto una función _bus.Defer (_checkStockCodeAvaila.TimeOutTime, message.StockCode);

Mi código actual ....

if (scheduleRecheck && result.ErrorMessage.Equals("Bad Request"))
            {
                Logger.Error("Stock query for stock code '{0}' returned a 'Product Not Found' status",
                    stockcode);

                _bus.SendLocal<ScheduleCheckStockAvailabilityCommand>(cmd =>
                {
                    cmd.StockCode = stockcode;
                });
            }
        }

El código de arriba funciona bien.

public class ScheduleCheckStockCodeAvailabilityProcessor : IHandleMessages<ScheduleCheckStockAvailabilityCommand>
{
    readonly ICheckStockCodeAvailability _checkStockCodeAvailability;
    readonly IBus _bus;

    public ScheduleCheckStockCodeAvailabilityProcessor(ICheckStockCodeAvailability checkStockCodeAvailability, IBus bus)
    {
        _checkStockCodeAvailability = checkStockCodeAvailability;
        _bus = bus;
    }

    public void Handle(ScheduleCheckStockAvailabilityCommand message)
    {
        _bus.Defer(_checkStockCodeAvailability.TimeOutTime, message.StockCode);
    }
}

Pero no puedo pensar lógicamente cómo funcionaría esto.

¿Alguna ayuda?

Respuestas a la pregunta(1)

Su respuesta a la pregunta