Fournisseur de file d'attente

Le fournisseur de file d'attente vous permet de mettre en file d'attente un grand nombre de tâches, puis de les mettre en déséquilibre à un rythme spécifié. Vous pouvez spécifier le nombre maximum de tâches qui se déroulent simultanément, ainsi que le nombre de tâches que vous souhaitez mettre en file d'attente par seconde. Les tâches qui échouent sont ajoutées à un fichier file d'attente pour les lettres mortes où vous pouvez mettre en file d'attente et réessayer.

Comment cela fonctionne-t-il ?

Lorsque vous créez une file d'attente, à l'aide de createQueue, vous spécifiez le maxInflight et le msgPerSecond paramètres. L'utilisation conjointe de ces paramètres vous permettra de contrôler le taux de mise en file d'attente.

Par exemple, si vous avez créé une file d'attente avec maxInflight fixé à 1 et msgPerSecond a également été fixé à 1, une tâche sera envoyée à votre point de terminaison de rappel toutes les secondes, à condition que vous renvoyiez une valeur de 2xx pour indiquer au fournisseur de la file d'attente que vous avez reçu la tâche. Si le fournisseur ne reçoit pas de 2xx il réessayera 3 fois avant de marquer la tâche comme ayant échoué. Les tâches échouées seront ajoutées à la file d'attente des lettres mortes.

Dans ce cas, parce que maxInflight a été fixé à un, la file d'attente attendra les tentatives avant de passer à la tâche suivante. Une valeur maxInflight permettrait au fournisseur de file d'attente d'envoyer et d'attendre simultanément des tâches supplémentaires.

Remarque : Le fournisseur de la file d'attente a une limite de charge utile de 8000 octets.

Fonctions

  • list - cela vous permet de lister les files d'attente que vous avez créées. Voir l'extrait de code ici.
  • createQueue - Utilisez-le pour contrôler le nombre de tâches exécutées simultanément, ainsi que le taux de mise en file d'attente. Voir l'extrait de code ici.
  • getQueueDetails - permet d'obtenir des détails et des statistiques sur une file d'attente. Voir l'extrait de code ici.
  • updateQueue - utiliser cette fonction pour mettre à jour une file d'attente créée précédemment. Voir l'extrait de code ici.
  • deleteQueue - utiliser cette fonction pour supprimer une file d'attente précédemment créée. Voir l'extrait de code ici.
  • pauseQueue - utiliser cette fonction pour mettre en pause une file d'attente créée précédemment. Voir l'extrait de code ici.
  • resumeQueue - reprend une file d'attente précédemment mise en pause ou une file d'attente qui a été créée avec isActive fixé à false. Voir l'extrait de code ici.
  • enqueue - enqueue une liste de tâches dans une file d'attente précédemment mise en pause. Voir l'extrait de code ici.
  • enqueueSingle - mettre en file d'attente une tâche unique dans une file d'attente précédemment mise en pause. Voir l'extrait de code ici.
  • deadLetterList - liste les tâches dans la file d'attente des lettres mortes. Voir l'extrait de code ici.
  • deadLetterDequeue - met en file d'attente les tâches qui ont échoué pour que vous puissiez les gérer. Voir l'extrait de code ici.

Remarque : Utiliser le vcr.verifyAuth méthode pour vérifier que les rappels proviennent de la plateforme d'exécution cloud.

Initialisation du fournisseur de files d'attente

Pour utiliser le fournisseur de files d'attente, vous devez créer une instance du fournisseur à l'aide d'une session :

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

Cas d'utilisation

Par exemple, pour utiliser le fournisseur de file d'attente pour mettre les tâches en file d'attente et les retirer de la file d'attente :

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);
});

Cela crée une file d'attente active, ce qui signifie que dès que des tâches sont mises en file d'attente, la file d'attente commence à les traiter immédiatement. Une file d'attente inactive devra être démarrée à l'aide de la commande resumeQueue.

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

Vous pouvez mettre les tâches en file d'attente en appelant enqueueSingle ou enqueue pour une liste de tâches. La tâche est censée être un objet JSON qui sera envoyé comme charge utile au callback spécifié lors de la création de la file d'attente.

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

Veillez à renvoyer un 2xx si vous vous êtes acquitté correctement de votre tâche.