Vista geral das subscrições

Para receber mensagens publicadas num tópico, tem de criar uma subscrição desse tópico. Apenas as mensagens publicadas no tópico após a criação da subscrição estão disponíveis para os clientes subscritores. O cliente subscritor recebe e processa as mensagens publicadas no tópico. Um tópico pode ter várias subscrições, mas uma determinada subscrição pertence a um único tópico.

A funcionalidade de retenção de tópicos permite que uma subscrição associada a um tópico procure no tempo e reproduza mensagens publicadas anteriormente. Pode saber mais sobre esta funcionalidade no tópico Repetição e eliminação de mensagens.

Fluxo de trabalho de subscrição

  1. Depois de uma mensagem ser enviada a um subscritor, este tem de confirmar a receção da mensagem.

  2. Se uma mensagem for enviada para entrega e um subscritor ainda não a tiver confirmado, a mensagem é 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 subscritor na mesma subscrição.

  4. O subscritor tem um período configurável e limitado, conhecido como ackDeadline, para confirmar a mensagem pendente. Após o prazo, a mensagem deixa de ser considerada pendente e o Pub/Sub tenta reenviar a mensagem.

Tipos de subscrições

Quando cria uma subscrição, tem de especificar o tipo de envio de mensagens. O Pub/Sub oferece os seguintes tipos de subscrições:

  • As subscrições de obtenção usam um cliente subscritor para pedir mensagens ao servidor do Pub/Sub.

  • As subscrições push usam o servidor Pub/Sub para iniciar pedidos à sua aplicação de subscrição para entregar mensagens.

  • As subscrições de exportação ajudam a exportar as suas mensagens diretamente para um Google Cloud recurso. Estas subscrições incluem o seguinte:

    • As subscrições do BigQuery exportam dados para uma tabela do BigQuery.

    • As subscrições do Cloud Storage exportam dados para um contentor do Cloud Storage.

Para escolher a subscrição correta para os requisitos da sua empresa, consulte o artigo Escolha um tipo de subscrição. Pode atualizar o tipo de envio de mensagens para uma subscrição em qualquer altura após a respetiva criação.

Propriedades de subscrição predefinidas

Por predefinição, o Pub/Sub oferece um fornecimento, pelo menos, uma vez sem garantias de ordenação em todos os tipos de subscrição. Em alternativa, se as mensagens tiverem a mesma chave de ordenação e estiverem na mesma região, pode ativar 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 Pub/Sub recebe as mensagens.

O Pub/Sub também suporta o envio exatamente uma vez.

Em geral, o Pub/Sub entrega cada mensagem uma vez e pela ordem em que foi publicada. No entanto, por vezes, as mensagens podem ser entregues fora de ordem ou mais do que uma vez. O Pub/Sub pode reenviar uma mensagem mesmo depois de um pedido de confirmação da mensagem ser devolvido com êxito. Esta reentrega pode ser causada por problemas como reinícios do lado do servidor ou problemas do lado do cliente. Assim, embora seja raro, qualquer mensagem pode ser reenviada em qualquer altura.

A acomodação de entregas mais do que uma vez requer que o subscritor seja idempotente ao processar mensagens.

Expiração da subscrição

Por predefinição, as subscrições expiram após 31 dias de inatividade do subscritor ou se não forem feitas atualizações à subscrição. Exemplos de atividades de subscritores: incluem ligações abertas, obtenções ativas ou envios bem-sucedidos. Se o Pub/Sub detetar atividade do subscritor ou uma atualização das propriedades da subscrição, o temporizador de eliminação da subscrição é reiniciado. Com as políticas de expiração da subscrição, pode configurar a duração da inatividade ou tornar a subscrição persistente, independentemente da atividade. Também pode eliminar uma subscrição manualmente.

Embora possa criar uma nova subscrição com o mesmo nome de uma eliminada, a nova subscrição não tem relação com a antiga. Mesmo que a subscrição eliminada tivesse muitas mensagens não reconhecidas, uma nova subscrição criada com o mesmo nome não teria pendências (nenhuma mensagem à espera de entrega) no momento da criação.

O que se segue?