Обработка сообщений с помощью 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);
}
}
Но я могу'Логично подумать, как это будет работать.
Любая помощь?