Как инициировать повторные попытки / события мертвого письма c в пакете событий в Azure EventGrid - PullRequest
0 голосов
/ 07 августа 2020

У меня есть служба приложения Azure с контроллером REST API, который можно вызывать из Azure сетки событий. Как вы, возможно, знаете, Event Grid может отправлять несколько событий в пакете. Я не знаю, при каких обстоятельствах это происходит на самом деле, потому что до сих пор полезная нагрузка события всегда представляла собой массив, состоящий только из одного единственного элемента, но документация дает понять, что в одном может быть несколько событий go.

Допустим, я получил пять событий, а событие №3 как-то неверно. Как я могу сообщить сетке событий, что я принял четыре из пяти событий и что он должен повторить попытку или отправить третье событие? 1006 *, даже если некоторые события действительно удались. Это нормальное sh компромиссное решение «лучше безопасно, чем сожалеть», потому что в настоящее время я одинокий рейнджер в этом проекте и поэтому могу убедиться, что мой код идемпотентен. Но я хочу убедиться, что какой-то другой разработчик в будущем не сможет сделать кодовую базу неидемпотентной и повсюду выскакивают несоответствия данных, потому что мой код сообщает EventGrid, что весь пакет был неудачным, хотя некоторые из событий были фактически обработано успешно. Что я могу сделать?

1 Ответ

2 голосов
/ 07 августа 2020

Политика пакетной обработки выходных данных таблицы событий Azure разработана как Все или Нет , подробнее см. здесь .

В случае, как вы описали, подписчик должен обработать logi c для пропуска уже успешно обработанных событий, а код статуса возврата должен быть для повторной доставки (например, 503). Обратите внимание, что 400 Bad Request немедленно обработает мертвую букву, если она включена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...