Subscrições de emissão

Este documento fornece uma vista geral de uma subscrição push, do respetivo fluxo de trabalho e das propriedades associadas.

Na entrega push, o Pub/Sub inicia pedidos à sua aplicação de subscrição para entregar mensagens. As mensagens são entregues a um servidor endereçável publicamente ou a um webhook, como um pedido HTTPS POST.

As subscrições push minimizam as dependências de bibliotecas cliente específicas do Pub/Sub e os mecanismos de autenticação. Também funcionam bem com tecnologias de serviços sem servidor e de dimensionamento automático, como as funções do Cloud Run, o Cloud Run e o Google Kubernetes Engine.

Antes de começar

Antes de ler este documento, certifique-se de que conhece o seguinte:

Fluxo de trabalho de subscrição de emissão

Numa subscrição push, um servidor do Pub/Sub inicia um pedido ao cliente subscritor para entregar mensagens.

A imagem seguinte mostra o fluxo de trabalho entre um cliente subscritor e uma subscrição push.

Fluxo de mensagens para uma subscrição push
Figura 3. Fluxo de trabalho para uma subscrição push

Segue-se uma breve descrição do fluxo de trabalho que faz referência à Figura 3:

  1. O servidor Pub/Sub envia cada mensagem como um pedido HTTPS para o cliente subscritor num ponto final pré-configurado. Esta solicitação é apresentada como PushRequest na imagem.
  2. O ponto final confirma a mensagem devolvendo um código de estado HTTP de êxito. Uma resposta sem êxito indica que o Pub/Sub tem de reenviar as mensagens. Esta resposta é apresentada como um PushResponse na imagem.
  3. O Pub/Sub ajusta dinamicamente a taxa de pedidos push com base na taxa à qual recebe respostas de sucesso.

Propriedades de uma subscrição push

As propriedades que configurar para uma subscrição push determinam a forma como escreve mensagens para a sua subscrição. Para mais informações, consulte o artigo Propriedades da subscrição.

Como os pontos finais de envio recebem mensagens

Quando o Pub/Sub envia uma mensagem para um ponto final de envio, pode optar por enviá-la envolvida ou não envolvida. Por predefinição, as mensagens são enviadas com quebra de linha.

  • Wrapped. O Pub/Sub envia a mensagem no corpo JSON de um pedido POST.
  • Desembrulhado. O Pub/Sub envia os dados da mensagem não processados diretamente como o corpo HTTP.

Os exemplos seguintes mostram um corpo envolvido de um pedido JSON POST a um ponto final de envio que contém a string Hello there no campo message.data

O corpo de um pedido POST é um objeto JSON. Os dados da mensagem estão no campo message.data e estão codificados em Base64.

Exemplo de um pedido com os valores mínimos

  {
      "message": {
          "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
          "messageId": "2070443601311540",
          "message_id": "2070443601311540",
          "publishTime": "2021-02-26T19:13:55.749Z",
          "publish_time": "2021-02-26T19:13:55.749Z"
      },
    "subscription": "projects/myproject/subscriptions/mysubscription"
  }
  

Exemplo de um pedido com os valores máximos

Tenha em atenção que este exemplo mostra os valores máximos atuais, que podem mudar ao longo do tempo. Além disso, o mapa de atributos pode conter uma variedade de valores.

  {
      "deliveryAttempt": 5,
      "message": {
          "attributes": {
              "key": "value"
          },
          "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
          "messageId": "2070443601311540",
          "message_id": "2070443601311540",
          "orderingKey": "key",
          "publishTime": "2021-02-26T19:13:55.749Z",
          "publish_time": "2021-02-26T19:13:55.749Z"
      },
    "subscription": "projects/myproject/subscriptions/mysubscription"
}

Para receber mensagens de subscrições push, use um webhook e processe os POST pedidos que o Pub/Sub envia para o ponto final push. Para mais informações sobre o processamento destes pedidos POST no App Engine, consulte o artigo Escrever e responder a mensagens do Pub/Sub.

Depois de receber um pedido push, devolva um código de estado HTTP. Para acusar a receção da mensagem, devolva um dos seguintes códigos de estado:

  • 102
  • 200
  • 201
  • 202
  • 204

Para enviar uma confirmação negativa da mensagem, devolva qualquer outro código de estado. Se enviar uma confirmação negativa ou o prazo de confirmação expirar, o Pub/Sub reenvia a mensagem. Não pode modificar o prazo de confirmação de mensagens individuais que recebe de subscrições push.

Autenticação para subscrições push

Se uma subscrição push usar autenticação, o serviço Pub/Sub assina um JWT e envia o JWT no cabeçalho de autorização do pedido push.

Para mais informações sobre a configuração da autenticação, consulte o artigo