Обработка сообщений с помощью nservicebus

Я имею дело с nServiceBus, и я хочу повторить попытку и сообщение в другое время, когда происходит сбой. Я слышал о Bus.Defer (), но мое понимание этого ограничено.

У меня есть система, которая проверяет биржевые коды. Он проверяет, когда команда вызывается, и перепланирует другую проверку после 8 вечера.

У меня есть CheckCurrentProductAvailabilityCommand, который запускает функцию, которая проверяет фондовые коды. Это обрабатывается CurrentProductAvailabilityRequestHandler.

Если это не удается, я запускаю ScheduleCheckStockAvailabilityCommand со стандартным кодом, который обрабатывается ScheduleCheckStockCodeAvailabilityProcessor.

Затем я запускаю функцию _bus.Defer (_checkStockCodeAvailability.TimeOutTime, message.StockCode);

Мой актуальный код ....

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

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

Код выше работает нормально.

public class ScheduleCheckStockCodeAvailabilityProcessor : IHandleMessages
{
    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);
    }
}

Но я могу'Логично подумать, как это будет работать.

Любая помощь?

Ответы на вопрос(1)

Ваш ответ на вопрос