Como usar filas pull no Java

Nesta página, você encontra uma visão geral das filas pull no ambiente padrão do App Engine.

Nas filas push, as tarefas são entregues para o serviço do worker com base na configuração da fila. Nas filas pull, o serviço do worker precisa solicitar tarefas à fila. A fila responde permitindo que esse worker tenha acesso exclusivo para processar a tarefa por um período específico. Isso é chamado de lease.

O aplicativo transfere a tarefa para o serviço de fila de tarefas que, então, é alocada pelo worker

Além disso, com as filas pull, é possível agrupar tarefas relacionadas usando tags e, em seguida, configurar o worker para extrair várias tarefas com uma determinada tag de uma só vez. Isso é chamado de processamento em lotes.

Se um worker não processar uma tarefa a tempo, ele poderá renovar a alocação ou deixá-la expirar para que outro worker a adquira. Após a conclusão do trabalho associado a uma tarefa, o worker precisa excluí-la.

As filas exigem que o código lide com algumas funções que são automatizadas nas filas push:

Escalonamento de workers
O código precisa escalonar o número de workers com base no volume de processamento. Caso o código não faça o escalonamento, há a possibilidade de perder recursos de computação se não houver tarefas a serem processadas. Se houver muitas tarefas, haverá o risco de latência.
Exclusão de tarefas
O código também precisa excluir explicitamente as tarefas após o processamento. Em filas push, o App Engine exclui as tarefas por você. No entanto, se o worker não excluir tarefas da fila pull após o processamento, outro worker processará novamente a tarefa. Isso desperdiça recursos de computação e apresenta risco de erros quando as tarefas não são idempotentes.

No ambiente padrão do App Engine, as filas pull são criadas com a definição de uma propriedade em um arquivo de configuração chamado queue.xml.

Fluxo de trabalho da fila pull

Os workers que processam tarefas de filas pull precisam ser definidos em um serviço que seja executado no ambiente padrão do App Engine.

O fluxo de trabalho é o seguinte:

  1. Crie uma fila pull usando queue.xml.
  2. Crie tarefas e as adiciona à fila.
  3. O worker criado aloca a tarefa usando o TaskQueue.
  4. O App Engine envia os dados da tarefa ao worker na resposta da alocação.
  5. O worker processa a tarefa. Se a tarefa não for executada antes do término da alocação, o worker poderá modificar a duração da alocação. Se a alocação expirar, a tarefa estará disponível para ser alocada a outro worker.
  6. Quando a tarefa for processada, o worker a excluirá.

A seguir