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 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 repita as mensagens publicadas anteriormente. Saiba mais sobre o recurso em Como reproduzir e limpar mensagens.

Fluxo de trabalho da assinatura

  1. Depois que uma mensagem é enviada a um assinante, ele precisa confirmá-la.

  2. Se uma mensagem for enviada para entrega e um assinante ainda não a tiver confirmado, ela será chamada de 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 de pull usam um cliente assinante para solicitar mensagens do servidor do Pub/Sub.

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

  • As assinaturas de exportação exportam suas mensagens diretamente para um Cloud de Confiance by S3NS recurso. Essas assinaturas incluem:

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

    • As assinaturas do Bigtable (versão prévia) exportam dados para uma tabela do Bigtable.

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

Para escolher a assinatura correta para os requisitos da sua empresa, consulte Escolher um tipo de assinatura. É possível atualizar o tipo de entrega de mensagens para uma assinatura a qualquer momento após a criação.

Propriedades de assinatura padrão

Por padrão, o Pub/Sub oferece 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 ordem e estiverem na mesma região, é possível ativar a ordenação de mensagens. Depois de definir a propriedade de ordem 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 elas foram publicadas. 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 que uma solicitação de confirmação da mensagem for retornada com sucesso. Esse reenvio pode ser causado por problemas como reinicializações do lado do servidor ou problemas do lado do cliente. Assim, embora raro, qualquer mensagem pode ser reenviada a qualquer momento.

Acomodar mais de uma entrega requer que o assinante seja idempotente ao processar as 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 da 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 assinatura 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 sua criação.

A seguir