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 inscritos. 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.

Com o recurso de retenção de tópicos, uma assinatura anexada a um tópico pode voltar no tempo e reproduzir 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 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:

  • 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 entregar mensagens.

  • A opção Exportar assinaturas exporta suas mensagens diretamente para um recurso Google Cloud. Essas assinaturas incluem o seguinte:

    • 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 certa para os requisitos da sua empresa, consulte Escolher um tipo de assinatura. É possível atualizar o tipo de entrega de mensagens de uma assinatura a qualquer momento após a criação.

Propriedades padrão da assinatura

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 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 de mensagens, o serviço Pub/Sub entrega mensagens com a mesma chave de ordenação e na ordem em que o serviço Pub/Sub as recebe.

O Pub/Sub também oferece suporte à entrega exatamente uma vez.

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 que uma solicitação de confirmação dela é retornada com sucesso. Essa nova entrega pode ser causada por problemas como reinicializações do lado do servidor ou problemas do lado do cliente. Assim, embora seja raro, qualquer mensagem pode ser entregue novamente a qualquer momento.

Acomodar mais de uma entrega requer 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 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 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. Você também pode 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 backlog (nenhuma mensagem aguardando entrega) no momento da criação.

A seguir