Я реализовал триггер EventGrid для ответа на события хранилища BLOB-объектов, логика которого упрощена ниже:
public static async void Run(
JObject eventGridEvent,
TraceWriter log,
ExecutionContext context)
{
string eventContent = ParseEvent(eventGridEvent);
HttpClient client = GetProxyClient();
HttpResponseMessage response = await client.GetAsync("blabla/" + eventContent);
string responseContent = await response.Content.ReadAsStringAsync();
log.Info("Here is the response :" + responseContent);
}
Внешний API не займет много времени, чтобы ответить (1 секунда или меньше) и моя конфигурациядля хоста установлено значение по умолчанию (поэтому разрешено неограниченное количество одновременных вызовов).
Я получаю много дублированных событий в журналах при добавлении нескольких BLOB-объектов (начиная только с 2 BLOB-объектов) одновременновремя (сценарий быстро загружает BLOB-объекты один за другим без промежутка времени ожидания).
Я чувствую, что это может быть связано с тем фактом, что я никогда не подтверждаю получение событий, и я не знаю,Я должен сделать это в своем коде, или триггер EventGrid делает это автоматически.
Является ли логика для подтверждения обработки события, которое должно быть реализовано в триггере EventGrid (ответ Http 200), или этообрабатывается автоматически?
Если нет, я все еще получаю дублированные события?Как правило, при загрузке одного большого двоичного объекта я получаю событие для него 3-4 раза.
Причина, по которой я задаю этот вопрос, заключается в том, что при использовании Http Trigger и возвращении ответа 400 я также получаю дублированные события, что имеет смыслтак как я не подтверждаю, что правильно обработал событие.Однако, когда я возвращаю ответ 200, я не получаю дублированные события.
Спасибо