В настоящее время существует известная проблема с применением принудительной квоты подписчиков в Google Cloud Pub / Sub.
В целом, принудительная квота подписчиков на самом деле не является хорошим способом применения принудительного контроля потока.,Для истинного управления потоком лучше использовать подписчиков по запросу и клиентские библиотеки .Цель управления потоком в подписчике состоит в том, чтобы предотвратить перегруженность подписчика.В клиентской библиотеке управление потоком определяется в терминах ожидающих сообщений и / или ожидающих байтов.При достижении одного из этих ограничений Cloud Pub / Sub приостанавливает доставку большего количества сообщений.
Проблема с управлением потоком на основе скорости состоит в том, что он не учитывает неожиданные проблемы с подписчиком или его нисходящим потоком.зависимостей.Например, представьте, что подписчик получает сообщения, пишет в базу данных, а затем подтверждает сообщение.Если база данных страдает от высокой задержки или просто недоступна в течение определенного периода времени, то управление потоком на основе скорости все равно будет доставлять абоненту больше сообщений, которые будут выполнять резервное копирование и в конечном итоге могут перегрузить его память.При управлении потоком на основе ожидающих сообщений или байтов тот факт, что база данных недоступна (что предотвращает подтверждение сообщений подписчиком), означает, что доставка полностью прекращена.В этой ситуации, когда база данных не может обрабатывать какие-либо сообщения или обрабатывает их очень медленно, отправка большего количества сообщений - даже с очень низкой скоростью - все еще вредна для подписчика.