Provedor de fila

O provedor de fila permite que você coloque grandes quantidades de tarefas na fila e, em seguida, as retire da fila a uma taxa especificada. É possível definir o número máximo de tarefas que podem ser executadas simultaneamente, bem como o número de tarefas que você deseja que sejam retiradas da fila por segundo. As tarefas que falharem serão adicionadas a uma fila de mensagens não entregues onde você pode retirar da fila e tentar novamente.

Como funciona

Ao criar uma fila, usando createQueue, você especifica o maxInflight e o msgPerSecond parâmetros. O uso conjunto desses parâmetros permitirá que você controle a taxa de retirada da fila.

Por exemplo, se você criou uma fila com maxInflight defina como 1 e msgPerSecond Se também estiver definido como 1, uma tarefa será enviada ao seu endpoint de callback a cada segundo, desde que você retorne um 2xx status para informar ao provedor da fila que você recebeu a tarefa. Se o provedor não receber um 2xx Se não houver resposta, ele tentará novamente três vezes antes de marcar a tarefa como falhada. As tarefas falhadas serão adicionadas à fila de mensagens perdidas.

Nesse caso, como maxInflight se estiver definido como um, a fila aguardará as tentativas de repetição antes de passar para a próxima tarefa. Um valor maior maxInflight Esse valor permitiria que o provedor da fila enviasse e aguardasse tarefas adicionais simultaneamente.

Observação: O provedor de fila tem um limite de carga útil de 8.000 bytes.

Funções

  • list - isso permite que você liste as filas que criou. Veja o trecho de código aqui.
  • createQueue - use isso para controlar o número de tarefas executadas simultaneamente, juntamente com a taxa de retirada da fila. Veja o trecho de código aqui.
  • getQueueDetails - isso recupera detalhes e estatísticas sobre uma fila. Veja o trecho de código aqui.
  • updateQueue - use isso para atualizar uma fila criada anteriormente. Veja o trecho de código aqui.
  • deleteQueue - use isso para excluir uma fila criada anteriormente. Veja o trecho de código aqui.
  • pauseQueue - use isso para pausar uma fila criada anteriormente. Veja o trecho de código aqui.
  • resumeQueue - isso retomará uma fila que havia sido pausada anteriormente ou uma fila que foi criada com isActive definir como false. Veja o trecho de código aqui.
  • enqueue - inserir uma lista de tarefas em uma fila que havia sido pausada anteriormente. Veja o trecho de código aqui.
  • enqueueSingle - colocar uma única tarefa na fila de uma fila que estava pausada. Veja o trecho de código aqui.
  • deadLetterList - liste as tarefas na fila de mensagens perdidas. Veja o trecho de código aqui.
  • deadLetterDequeue - retira da fila as tarefas com falha para que você possa tratá-las. Veja o trecho de código aqui.

Observação: Use o vcr.verifyAuth método para verificar se as chamadas de retorno têm origem na Cloud Runtime Platform.

Inicializando o provedor de fila

Para usar o Provedor de Fila, é necessário criar uma instância do provedor por meio de uma sessão:

const session = vcr.createSession();
const queue = new Queue(session);

Caso de uso

Por exemplo, para usar o provedor de fila para enfileirar e retirar tarefas da fila:

app.post('/queue', async (req, res, next) => {
    await queue.createQueue(req.body.name, 'execute', { 
        maxInflight: req.body.maxInflight, 
        msgPerSecond: req.body.msgPerSecond, 
        active: true
    });
    res.sendStatus(200);
});

Isso cria uma fila ativa, o que significa que, assim que as tarefas forem colocadas na fila, ela começará a processá-las imediatamente. Uma fila inativa precisará ser iniciada usando resumeQueue.

app.post('/enqueue', async (req, res, next) => {
    await queue.enqueueSingle(req.body.name, req.body.data);
    res.sendStatus(200);
});

Você pode colocar tarefas na fila chamando enqueueSingle ou enqueue para uma lista de tarefas. Espera-se que a tarefa seja um objeto JSON, que será enviado como carga útil para o callback especificado no momento da criação da fila.

app.post('/execute', async (req, res, next) => {
    await processTask(req.body);
    res.sendStatus(200);

Certifique-se de devolver um 2xx status, caso você tenha realizado sua tarefa corretamente.