Функция Azure с триггером Event Grid вызывается дважды, тогда как из другой функции Azure она публикуется только один раз. - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть функция Azure, которая имеет триггер сетки событий.Публикация в теме сетки событий, на которую она была подписана (вручную), выполняется из другой функции Azure.

Когда я запускаю функцию Azure с кодом для публикации в функцию с триггером сетки событий, приведенный ниже код выполняется один раз, как я вижу из регистратора, который отображает «Публикация в сетке событий» только один раз, как и ожидалось.

log.Info("Publishing to event grid");
client.PublishEventsAsync(topicHostname,GetEventsList(id).GetAwaiter().GetResult);

Однако функция с триггером сетки событий вызывается дважды, поскольку я вижу, как строка ниже напечатана дважды в функции лазури с триггером сетки событий

2019-09-27T14: 43: 16.130 [Информация] Функция запущена (Id = dc1ed52a-016b-4b25-8ebf-ac533c3ea84b)

Во время выполнения функции она снова отображает следующую строку:

2019-09-27T14: 43: 16.168 [Информация] Функция запущена (Id = 61edb64e-f6ed-4956-851f-59e16fb1dc4e)

Я ожидаю, что "«Функция запущена» должна входить в журналы только один раз, а не дважды, поскольку другая функция выполняет публикацию в теме сетки событий только один раз.Что может быть решением, чтобы убедиться, что функция с триггером сетки событий вызывается только один раз?

Спасибо

1 Ответ

0 голосов
/ 28 сентября 2019

Полагаю, вы используете политики повторных попыток сетки событий.Сетка событий по умолчанию автоматически повторяет сообщения, которые, по ее мнению, не удалось обработать.По умолчанию он ожидает 30 секунд ответа от веб-хука, и если прошло более 30 секунд, он предполагает, что произошел сбой, и может повторить попытку.Я предполагаю, что когда вы видите, что это срабатывает во второй раз, прошло 30 секунд, и сетка событий повторяет сообщение.Обходной путь для более длинных функций состоит в том, чтобы иметь очередь в середине.Либо Event Grid попадает в очередь, в которой срабатывает функция, либо функция запускает и сбрасывает в очередь (или запускает асинхронную оркестровку Durable Function), так что Event Grid получает немедленный ответ «Я получил это», пока работа продолжается в фоновом режиме..

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