Visão geral da assinatura

Para receber mensagens publicadas em um tópico, você precisa criar uma assinatura nele. Somente as mensagens publicadas no tópico após a criação da assinatura estarão disponíveis para os clientes do assinante. O cliente do 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 repetir e limpar mensagens.

Fluxo de trabalho de assinatura

  1. Depois que uma mensagem é enviada ao assinante, o assinante precisa confirmá-la.

  2. Se uma mensagem for enviada para entrega e o assinante ainda não tiver confirmado a mensagem, 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 para nenhum outro assinante na mesma assinatura.

  4. O assinante tem um período de tempo limitado configurável, conhecido como ackDeadline, para confirmar a mensagem pendente. Depois que o prazo passa, a mensagem não é mais considerada pendente, e o Pub/Sub tenta reenviá-la.

Tipos de assinatura

Ao criar uma assinatura, você precisa especificar o tipo de entrega da mensagem. O Pub/Sub oferece os seguintes tipos de assinaturas:

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

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

  • A opção Exportar assinaturas ajuda 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 de acordo com seus requisitos comerciais, 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 dela.

Propriedades de assinatura padrão

Por padrão, o Pub/Sub oferece entrega pelo menos uma vez sem garantias de ordem em todos os tipos de assinatura. Como alternativa, se as mensagens tiverem a mesma chave de ordem e estiverem na mesma região, ative a ordenação de mensagens. Depois de definir a propriedade de ordenação de mensagens, o serviço Pub/Sub entrega mensagens com a mesma chave de ordenação e na ordem em que o serviço do Pub/Sub as recebe.

O Pub/Sub também oferece suporte à entrega única.

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 entregar uma mensagem novamente mesmo após o retorno bem-sucedido de uma solicitação de confirmação. Esse reenvio pode ser causado por problemas como reinicializações do lado do servidor ou problemas do lado do cliente. Assim, embora seja rara, qualquer mensagem pode ser reenviada a qualquer momento.

Acomodar mais de uma entrega exige que o assinante seja idempotente ao processar as mensagens.

Validade da assinatura

Por padrão, as assinaturas expiram após 31 dias de inatividade do assinante ou se não há 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 validade da assinatura, é possível configurar a duração da inatividade ou tornar a assinatura persistente, independente da atividade. Também é possível excluir uma assinatura manualmente.

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

A seguir