В дополнение к ответу @ JoshCarlisle и более ясной доставке сообщений Сетка событий и повторите документ:
Мертвые буквы включают особый случай в логике политики повторных попыток.
В случае если «мертвая надпись» имеет значение при включении и абоненту не удалось выполнить команду HttpStatusCode.BadRequest , Сетка событий остановит процесс повторной попытки, и событие будет отправлено мертвому пользователю. конечная точка письма. Этот код ошибки указывает, что доставка никогда не будет успешной.
в следующем фрагменте кода показаны некоторые свойства сообщения о недоставке:
"deadLetterReason": "UndeliverableDueToHttpBadRequest",
"deliveryAttempts": 1,
"lastDeliveryOutcome": "BadRequest",
"lastHttpStatusCode": 400,
в следующем списке показаны некоторые коды состояния, в которых Сетка событий будет продолжаться в процессе повторной попытки:
HttpStatusCode.ServiceUnavailable
HttpStatusCode.InternalServerError
HttpStatusCode.RequestTimeout
HttpStatusCode.NotFound
HttpStatusCode.Conflict
HttpStatusCode.Forbidden
HttpStatusCode.Unauthorized
HttpStatusCode.NotImplemented
HttpStatusCode.Gone
Пример некоторых свойств недоставленных букв, когда HttpStatusCode.RequestTimeout :
"deadLetterReason":"MaxDeliveryAttemptsExceeded",
"deliveryAttempts":3,
"lastDeliveryOutcome":"TimedOut",
"lastHttpStatusCode":408,
Теперь вы можете увидеть два приведенных выше случая различий, описанных в свойстве deadLetterReason , например " UndeliverableDueToHttpBadRequest " vs " MaxDeliveryAttemptsExceeded "
Еще одна вещь:
- При включении недоставленных букв Сетка событий НЕ доставит сообщение о недоставленных письмах в конечную точку мертвых букв сразу, но через ~ 300 секунд. Я надеюсь, что это ошибка, и она скоро будет исправлена.
Практически, если подписчику не удалось, например, HttpStatusCode.BadRequest , мы не можем ждать в течение 5 минут событие из хранилища контейнера, это должно быть событие, управляемое близко к реальному времени.