Como migrar filas pull para o Pub/Sub

Nesta página, explicamos como migrar o código da fila pull de Task Queues para o Pub/Sub. O Pub/Sub agora é a maneira preferencial de executar o trabalho da fila pull no App Engine.

Se o aplicativo usa filas pull e filas push, use este guia para migrar filas pull para o Pub/Sub antes de migrar suas filas push para o novo serviço de filas push Cloud Tasks. A migração de filas pull após a migração de filas push para o Cloud Tasks não é recomendada porque o uso obrigatório do arquivo queue.yaml provavelmente causa um comportamento inesperado com o Cloud Tasks.

Recursos não disponíveis no Pub/Sub

Os seguintes recursos do Task Queues não estão disponíveis atualmente no Pub/Sub:

  • Lote por tag
  • Desduplicação automática

Preços e cotas

Migrar suas filas pull para Pub/Sub pode afetar o preço e as cotas do seu aplicativo.

Preços

Pub/Sub tem seu próprio preço. Assim como no Task Queues, o envio de solicitações para o aplicativo do App Engine com o Pub/Sub pode gerar custos.

Cotas

As cotas do Pub/Sub são diferentes das cotas do Task Queues. Assim como no Task Queues, o envio de solicitações para o aplicativo App Engine a partir do Pub/Sub pode afetar as cotas de solicitação do App Engine.

Antes de migrar

Nesta seção, discutimos tópicos que você precisa abordar antes de migrar suas filas pull para o Pub/Sub.

Como ativar a API Pub/Sub

Para ativar a API Pub/Sub, clique em Ativar na API Pub/Sub na Biblioteca de APIs. Se você vir um botão Gerenciar em vez de um botão Ativar, isso significará que a API Pub/Sub já está ativada para seu projeto.

Como autenticar seu aplicativo na API Pub/Sub

É necessário autenticar seu aplicativo para a API Pub/Sub. Nesta seção, discutimos a autenticação para dois casos de uso diferentes.

Para desenvolver ou testar seu aplicativo localmente, recomendamos usar uma conta de serviço. Veja instruções sobre como configurar uma conta de serviço e conectá-la ao aplicativo em Como receber e fornecer credenciais da conta de serviço manualmente.

Para implantar o aplicativo no App Engine, você não precisa fornecer nenhuma nova autenticação. As Application Default Credentials (ADC, na sigla em inglês) inferem detalhes de autenticação de aplicativos do App Engine.

Como fazer o download da Google Cloud CLI

Faça o download e instale a Google Cloud CLI para usar a CLI gcloud com a API Pub/Sub, se ainda não tiver sido instalada. Se já tiver a Google Cloud CLI instalada, execute o seguinte comando no terminal:

gcloud components update

Como importar a biblioteca de cliente para Java

Siga as instruções do Pub/Sub para instalar a biblioteca de cliente e usá-la com seu aplicativo.

Filas do Pub/Sub e pull

Comparação do recurso

O Pub/Sub envia trabalho aos workers por meio de uma relação de editor/assinante. Uma assinatura pull no Pub/Sub é como uma fila pull em Task Queues porque o assinante extrai a mensagem do tópico. Na tabela abaixo, listamos o recurso principal para filas pull em Task Queues e o recurso associado para assinaturas de pull em Pub/Sub.

Recurso Task Queues Recurso do Pub/Sub
Fila Tópico
Tarefa Mensagem
Worker Inscrito

Para saber mais sobre a arquitetura do Pub/Sub, leia Cloud Pub/Sub: um serviço de mensagens em escala do Google.

Comparação do fluxo de trabalho

Veja abaixo uma comparação de um fluxo de trabalho típico para uma fila pull no Task Queues e uma assinatura pull em Pub/Sub.

Fluxo de trabalho do Task Queues Fluxo de trabalho do Pub/Sub
Você cria a fila pull Você cria o tópico e inscreve seu assinante (isto é, worker) no tópico
Você cria e enfileira a tarefa Você cria a mensagem e a pública no tópico
O worker aluga a tarefa O assinante extrai a mensagem do tópico
O worker processa a tarefa O assinante processa a mensagem
O worker exclui a tarefa da fila O assinante reconhece a mensagem
A locação expira O tópico exclui a mensagem quando todos os assinantes a reconhecem

Como criar assinaturas de pull no Pub/Sub

É possível usar uma assinatura de pull do Pub/Sub como uma fila pull do Task Queues. As assinaturas de um tópico não expiram e podem existir simultaneamente para vários workers. Isso significa que uma mensagem pode ser processada por mais de um worker, que é um dos principais casos de uso do Pub/Sub. Para recriar filas pull de Task Queues como assinaturas de pull do Pub/Sub, crie um tópico para cada worker e faça a assinatura apenas do worker associado no tópico. Isso garante que cada mensagem seja processada por exatamente um worker, como em Task Queues. Para mais informações sobre como criar e gerenciar assinaturas de pull, leia sobre como gerenciar tópicos e assinaturas.

Como excluir filas pull

Depois de migrar filas pull de Task Queues para assinaturas de pull do Pub/Sub, exclua-as do Task Queues usando o arquivo queue.yaml. Recomendamos excluir cada fila pull antes de migrar a próxima. Isso impede que seu aplicativo duplique o trabalho recebido da nova assinatura de pull Pub/Sub enquanto você migra suas outras filas pull. A exclusão de filas pull de Task Queues individualmente, em vez de em uma única implantação, pode ter um efeito maior sobre sua cota de implantação do App Engine.

Depois da exclusão de todas as suas filas pull de Task Queues, será possível omitir o arquivo queue.yaml de implantações futuras do seu aplicativo.

Se o aplicativo usar apenas filas pull, remova todas as referências à API Task Queues no seu código. Se seu aplicativo usar filas pull e push, será possível remover as referências à API Task Queues que ocorrem em arquivos que só usam filas pull ou aguardar até que também tenha migrado suas filas push e remova referências à API Task Queues de todos os arquivos.

A seguir