Visão geral da assinatura

Para receber as mensagens publicadas em um tópico, crie uma assinatura para ele. Somente as mensagens publicadas no tópico após a criação da assinatura estão disponíveis para os clientes de assinantes. O cliente assinante recebe e processa as mensagens publicadas no tópico. Um tópico pode ter várias assinaturas, mas cada assinatura pertence a somente um tópico.

O recurso de retenção de tópicos permite que uma assinatura anexada a um tópico volte no tempo e reproduza mensagens publicadas anteriormente. Saiba mais sobre o recurso no tópico Como reproduzir e limpar mensagens.

Fluxo de trabalho de assinatura

  1. Depois que uma mensagem é enviada ao assinante, ele precisa confirmar a mensagem.

  2. Se uma mensagem for enviada para entrega e um assinante ainda não a tiver confirmado, ela será considerada pendente.

  3. O Pub/Sub tenta repetidamente entregar qualquer mensagem que ainda não tenha sido confirmada. No entanto, o Pub/Sub tenta não entregar uma mensagem pendente a nenhum outro assinante na mesma assinatura.

  4. O assinante tem um período de tempo limitado para confirmar a mensagem, que pode ser configurado e é chamado de ackDeadline. Depois que o prazo termina, a mensagem não é mais considerada pendente, e o Pub/Sub tenta reenviá-la.

Tipos de assinaturas

Ao criar uma assinatura, é necessário especificar o tipo de entrega de mensagens. O Pub/Sub oferece os seguintes tipos de assinaturas:

  • As assinaturas por pull usam um cliente assinante para solicitar mensagens do servidor do Pub/Sub.

  • As assinaturas push usam o servidor do Pub/Sub para iniciar solicitações ao aplicativo do assinante para enviar mensagens.

  • As assinaturas de exportação ajudam você a exportar suas mensagens diretamente para um recurso do Google Cloud. Essas assinaturas incluem:

    • As assinaturas do BigQuery exportam dados para uma tabela do BigQuery.

    • As assinaturas do Cloud Storage exportam dados para um bucket do Cloud Storage.

Para escolher a assinatura correta para seus requisitos de negócios, consulte Escolher um tipo de assinatura. É possível atualizar o tipo de envio de mensagens de uma assinatura a qualquer momento após a criação.

Propriedades de assinatura padrão

Por padrão, o Pub/Sub oferece a entrega pelo menos uma vez sem garantias de ordenação em todos os tipos de assinatura. Como alternativa, se as mensagens tiverem a mesma chave de ordenação e estiverem na mesma região, é possível ativar a ordenação de mensagens. Depois que você define a propriedade de ordenação da mensagem, o serviço Pub/Sub entrega mensagens com a mesma chave de ordem e na ordem em que o serviço Pub/Sub recebe as mensagens.

O Pub/Sub também oferece suporte ao envio único.

Em geral, o Pub/Sub entrega cada mensagem uma vez e na ordem em que foi publicada. No entanto, às vezes as mensagens podem ser entregues fora de ordem ou mais de uma vez. O Pub/Sub pode reenviar uma mensagem mesmo depois de uma solicitação de confirmação para a mensagem retornar com sucesso. Essa reentrega pode ser causada por problemas como reinicializações do lado do servidor ou do cliente. Assim, embora raro, qualquer mensagem pode ser entregue novamente a qualquer momento.

A acomodação de mais de uma entrega requer que o assinante seja idempotente ao processar mensagens.

Expiração da assinatura

Por padrão, as assinaturas expiram após 31 dias de inatividade do assinante ou se não houver atualizações feitas na assinatura. Exemplos de atividades do assinante incluem conexões abertas, pulls ativos ou pushes bem-sucedidos. Se o Pub/Sub detectar atividade do assinante ou uma atualização nas propriedades da assinatura, o relógio de exclusão de assinatura será reiniciado. Usando políticas de expiração de assinatura, é possível configurar a duração da inatividade ou tornar a assinatura persistente, independentemente da atividade. Também é possível excluir uma assinatura manualmente.

Embora seja possível criar uma nova assinatura com o mesmo nome de uma excluída, a nova assinatura não tem relação com a antiga. Mesmo que a assinatura excluída tivesse muitas mensagens não confirmadas, uma nova assinatura criada com o mesmo nome não teria nenhum backlog (ou seja, nenhuma mensagem aguardando entrega) no momento da criação.

A seguir