Мы используем MassTransit's IConsumeObserver
, чтобы отметить ошибки при потреблении.
Это вместо службы, потребляющей все Fault
события, потому что мы используем служебную шину Azure, а эта не поддерживает полиморфный обмен сообщениями
Поскольку у нас настроены повторные попытки, мы заметили, что блок ConsumeFault<T>()
вводится в каждую повторную попытку.
Мы ищем способ определить, находимся ли мы в повторной попытке или нет; введите GetRetryAttempt()
.
Пример нашего использования:
public virtual async Task ConsumeFault<T>(ConsumeContext<T> context, Exception exception) where T : class
{
if (context.GetRetryAttempt() <= 0)
{
await NotifyFault());
}
}
Мы заметили (ха, ха), что GetRetryAttempt()
всегда равен 0, как также указывалось в комментарии к аналогичному вопросу
Есть ли другой способ определить, когда мы больше не повторяем попытку? Или другой способ предпринять какие-либо действия, если повторные попытки были исчерпаны?