Skip to main content
Que est une alternative haute performance à Delayed::Job ou Queue Classic qui améliore la fiabilité de votre application en protégeant vos jobs avec les mêmes garanties ACID que le reste de vos données. AppSignal instrumente automatiquement Que lorsque Que est détecté au démarrage, en suivant les exceptions et les problèmes de performances. Aucune configuration manuelle n’est requise.

Surveillance des performances

Chronologie des événements

Les jobs Que apparaissent dans la chronologie des événements des actions de performance de votre application sous forme d’événements perform_job.que.

Regroupement d’incidents

AppSignal détecte les noms de jobs à partir du nom de classe du worker Que, suffixé par le nom de la méthode run, ce qui donne quelque chose comme : MyWorker#run. AppSignal regroupe les jobs par ce nom pour la surveillance des performances et les notifications.

Instrumentation de mise en file d’attente

La mise en file d’attente d’un job Que enregistre un événement enqueue.que, intitulé d’après le job mis en file d’attente. Les mises en file d’attente en lot sur la version 2 de Que enregistrent un seul événement bulk_enqueue.que à la place. AppSignal enregistre les événements de mise en file d’attente dans la chronologie des événements de la transaction active, par exemple lorsque vous mettez en file d’attente un job depuis une requête web ou depuis un autre job. Il ne les enregistre que lorsqu’une transaction est active, donc mettre en file d’attente un job en dehors d’une transaction n’enregistre rien. Pour arrêter d’enregistrer les événements de mise en file d’attente pour toutes les intégrations de jobs en arrière-plan, définissez l’option de configuration enable_job_enqueue_instrumentation sur false. Cela n’affecte pas l’instrumentation des jobs eux-mêmes.

Prise en charge d’Active Job

L’intégration Que est compatible avec Active Job. Mettez à niveau vers la version 2.11.0 ou plus récente de la gem Ruby pour une prise en charge améliorée.

Exemple d’application

Nous avons une application d’exemple dans notre dépôt d’exemples sur GitHub.

Attributs de span

Mode collector uniquement : ceci s’applique lorsqu’AppSignal pour Ruby s’exécute en mode collector. Cela n’a aucun effet dans les autres cas.
L’enqueue et le span propre au job portent tous deux :
  • messaging.system — la bibliothèque de mise en file d’attente.
  • messaging.destination.name — la queue sur laquelle le job a été placé.
  • messaging.operation.type — indique si le span correspond à la mise en file d’attente ou à l’exécution du job.
Un span pour un job qui a levé une erreur porte également error.type, la classe de l’erreur.

Tracing distribué

Mode collector uniquement : ceci s’applique lorsqu’AppSignal pour Ruby s’exécute en mode collector. Cela n’a aucun effet dans les autres cas.
Un job s’exécute dans la même trace que le code qui l’a mis en file d’attente, apparaissant sous la requête ou le job qui l’a planifié. Vous pouvez remonter d’un job lent jusqu’à sa cause. Les jobs mis en file d’attente avec Que.bulk_enqueue font exception. Ils n’apparaissent pas sous la trace qui les a mis en file d’attente. Chaque job reçoit sa propre trace, reliée à la mise en file d’attente en lot, car une seule mise en file d’attente ne peut pas être parent d’un lot entier. La trace est transportée dans les tags du job. Que dispose de tags à partir de la version 1.0, donc rien n’est transporté sur Que 0.x. Que autorise au maximum cinq tags par job. Un job qui n’a plus de place pour la trace est mis en file d’attente sans trace. En savoir plus sur le tracing distribué.