Google Cloud Pub / Sub повторяет доставку сообщения, если оно не получает ответ в течение 30 секунд. Предназначены? - PullRequest
1 голос
/ 10 ноября 2019

Я использую сервлет Java 8 в качестве конечной точки Push Pub / Sub Cloud. На моей конечной точке push выполняется длительная операция блокировки, которая иногда выполняется более минуты. После завершения операции я возвращаю 200 ответ, подтверждающий сообщение.

Если я возвращаю 500 ошибку сервера, сообщение повторяется, что ожидается.

Обратите внимание, что я создаю свою подписку с максимально допустимым периодом подтверждения в 600 секунд.

Что я заметил, так это то, что если моя длительная операция длится более 30 секунд, сообщение также повторяется. Похоже, HTTP-соединение, используемое для принудительной доставки, не существует более 30 секунд или что-то в этом роде.

Это предназначено? Это настраивается как-то? Заранее спасибо.

1 Ответ

1 голос
/ 10 ноября 2019

Для push-подписок Cloud Pub / Sub не отправляет отрицательное подтверждение (иногда называемое «nack»). Если ваш веб-крючок не возвращает код успеха в течение крайнего срока подтверждения, Cloud Pub / Sub повторяет доставку до истечения срока действия сообщения по истечении срока хранения сообщения подписки. Вы можете настроить крайний срок подтверждения по умолчанию для push-подписок, когда вы создаете push-подписку (выберите push-подписку и установите Срок подтверждения ).

Обратите внимание, что, в отличие от pullподписки, срок не может быть продлен для отдельных сообщений. Крайний срок - это фактически время, которое конечная точка должна ответить на push-запрос.

...