Облачные функции, запускаемые дублирующимися сообщениями Cloud PubSub - PullRequest
0 голосов
/ 18 мая 2019

Я экспериментирую с использованием облачных функций в качестве асинхронного фонового работника, запускаемого PubSub, и выполняю немного более длительную работу (порядка нескольких минут).Полный код здесь https://github.com/zdenulo/cloud-functions-pubsub

Мой прототип вставляет данные в BigQuery и ждет несколько минут (чтобы имитировать более длинную задачу).Я публикую 100 сообщений в теме PubSub (с интервалом в 1 секунду).

Подчеркивается, что PubSub может доставлять несколько раз одно и то же сообщение, но я был удивлен, что от 10 до 40 из 100 дублируются.Время отклика на CF составило 5, 6, 7 минут.За 4 минуты ответа я не заметил дубликатов.
Я провел несколько тестов за одинаковые промежутки времени.Разница во времени между получением первого и второго сообщения составляет от ~ 30 до ~ 600 секунд.

В документации https://cloud.google.com/pubsub/docs/troubleshooting упоминается "Cloud Pub / Sub может отправлять дубликаты сообщений. Например, если вы не подтверждаете сообщение до истечения срока его подтверждения, Cloud Pub / Sub повторно отправляет сообщение«.Для подписки на облачные функции срок подтверждения составляет 600 секунд (10 минут), поэтому, насколько я понимаю, причина не в этом.

Возможно, у меня есть конкретный контрольный пример или, может быть, есть что-то еще.
Буду признателен за совет о том, как справиться с такой ситуацией, и если это нормально, или как это сделать для предотвращения дублирования(исключая поток данных).

1 Ответ

0 голосов
/ 23 мая 2019

Существует проблема, влияющая на облачные функции, развернутые до января 2019 года, которая приводит к увеличению частоты дублирования триггеров для функций, выполнение которых занимает более 5 минут. Пожалуйста, попробуйте удалить и повторно развернуть свою функцию, чтобы решить эту проблему.

...