Política de repetição de assinatura

Um assinante pode não processar mensagens por vários motivos. Por exemplo, o assinante pode ter problemas temporários ao recuperar os dados necessários ou receber uma mensagem em um formato inesperado.

Se o Pub/Sub tentar entregar uma mensagem, mas o assinante não conseguir confirmá-la, a ferramenta vai tentar reenviar a mensagem automaticamente. Essa tentativa de reenvio é conhecida como política de novas tentativas de assinatura. Não é possível ativar ou desativar esse recurso. No entanto, você pode escolher o tipo de política de nova tentativa que quer usar.

Antes de começar

  • Crie um tópico para usar com sua assinatura que contém uma política de novas tentativas.

Funções exigidas

Para receber as permissões necessárias para gerenciar tópicos e assinaturas, peça ao administrador para conceder a você o papel do IAM de Editor do Pub/Sub(roles/pubsub.editor) no seu projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

É possível configurar o controle de acesso no nível do projeto e no nível do recurso individual. É possível criar uma assinatura em um projeto e anexá-la a um tópico localizado em outro projeto. Verifique se você tem as permissões necessárias para cada projeto.

Tipos de políticas de repetição

Ao criar e configurar sua assinatura, você pode escolher usar uma das seguintes políticas de repetição: nova entrega imediata ou espera exponencial. Por padrão, as assinaturas usam o reenvio imediato.

Nova entrega imediata

Por padrão, o Pub/Sub tenta reenviar a mensagem imediatamente (e potencialmente para o mesmo cliente assinante). No entanto, se as condições que impediram a confirmação da mensagem não mudarem, o reenvio imediato poderá causar problemas. Nesse caso, é possível que o Pub/Sub reenvie várias mensagens que não podem ser confirmadas.

Para resolver problemas imediatos de nova entrega, o Pub/Sub permite configurar uma política de espera exponencial.

Espera exponencial

A espera exponencial permite adicionar atrasos cada vez mais longos entre as novas tentativas. Após a primeira falha na entrega, o Pub/Sub espera um tempo mínimo antes de tentar novamente. Para cada falha consecutiva de mensagem, mais tempo é adicionado ao atraso, até um valor máximo (0 e 600 segundos).

Os intervalos de atraso máximo e mínimo não são fixos e precisam ser configurados com base em fatores locais do aplicativo.

Observe as seguintes considerações sobre a espera exponencial:

  • A espera exponencial é acionada nas seguintes ações:
    • Quando uma confirmação negativa é recebida.
    • Quando o prazo de confirmação de uma mensagem expira.
  • O backoff exponencial é aplicado apenas por mensagem, e não a todas as mensagens em uma assinatura (global).
  • Ao usar a espera exponencial, o Pub/Sub continua entregando outras mensagens, mesmo que as anteriores tenham recebido confirmações negativas (a menos que você esteja usando a entrega de mensagens ordenadas).

Use a política de novas tentativas para atrasar a entrega e o processamento de um subconjunto de mensagens para acomodar uma incapacidade temporária de processar algumas mensagens após a entrega. O recurso é aplicado com base no melhor esforço, e cada mensagem é avaliada separadamente para a política de novas tentativas.

Não recomendamos usar esse recurso para introduzir atrasos intencionais na entrega de mensagens. Se você enviar uma confirmação negativa (nack) para um grande número de mensagens em uma assinatura configurada com uma política de repetição, é possível que algumas dessas mensagens sejam entregues com menos ou sem espera. O Pub/Sub também pode diminuir a velocidade de entrega de todas as mensagens se você enviar um reconhecimento negativo de um grande número de mensagens.

Se você precisar agendar entregas, use o Cloud Tasks.

Configurar a espera exponencial

Console

Ao criar uma nova assinatura, siga as etapas a seguir para configurar uma política de repetição com espera exponencial:

  1. No console Google Cloud , acesse a página Assinaturas do Pub/Sub.

Acessar "Assinaturas"

  1. Clique em Criar assinatura.

  2. No campo ID da assinatura, insira um nome.

Para informações sobre como nomear uma assinatura, consulte Diretrizes para nomear um tópico ou uma assinatura.

  1. Escolha ou crie um tópico no menu suspenso.

A assinatura recebe mensagens do tópico.

  1. Selecione um Tipo de entrega.

  2. Em Política de repetição, selecione Repetir após atraso de espera exponencial.

  3. Insira uma Espera mínima e uma Espera máxima entre 0 e 600 segundos.

Os valores padrão são 10 segundos na espera mínima e 600 na máxima.

  1. Clique em Criar.

gcloud

Para criar uma nova assinatura com uma política de repetição com espera exponencial, execute o seguinte comando gcloud pubsub create.

gcloud pubsub subscriptions create SUBSCRIPTION_ID \
  --topic=TOPIC_ID \
  --min-retry-delay=MIN_RETRY_DELAY \
  --max-retry-delay=MAX_RETRY_DELAY

Substitua:

  • SUBSCRIPTION_ID: um ID exclusivo para sua assinatura.
  • TOPIC_ID: o ID do tópico a que você quer anexar a assinatura.
  • MIN_RETRY_DELAY: o atraso mínimo de espera da assinatura.
  • MAX_RETRY_DELAY: o atraso máximo de espera da assinatura.

A seguir