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 comisActivedefinir comofalse. 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.