Passer au contenu principal
Advanced Message Queuing Protocol (AMQP) est un protocole standard ouvert qui facilite l’interopérabilité de la messagerie entre les systèmes, quel que soit le fournisseur du broker de messages ou la plateforme utilisée, par exemple entre les brokers STOMP et MQTT. L’intégration AppSignal pour Node.js pour amqplib et les packages compatibles tels que Rascal vous permet d’instrumenter l’envoi et la réception de messages dans votre application.

Installation

Le package amqplib est instrumenté automatiquement par le package AppSignal pour Node.js.

Fonctionnalités

Lorsque vous utilisez l’intégration amqplib, AppSignal créera un span enfant pour chaque message envoyé ou reçu. Notez que si les messages sont reçus/envoyés en dehors d’un contexte instrumenté, tel qu’une requête web ou un job en arrière-plan, il est nécessaire de créer manuellement un span pour encapsuler le traitement du message. Voici un exemple pour Rascal utilisant l’exemple le plus simple trouvé dans leur dépôt, avec une instrumentation manuelle ajoutée pour encapsuler le traitement du message dans un span.
let Rascal = require("../..");
let config = require("./config");
const trace = require("@opentelemetry/api");
const tracer = trace.getTracer("example-tracer");

Rascal.Broker.create(Rascal.withDefaultConfig(config), function (err, broker) {
  if (err) throw err;

  broker.subscribe("demo_sub", function (err, subscription) {
    if (err) throw err;
    subscription.on("message", function (message, content, ackOrNack) {
      tracer.startActiveSpan("received message demo_sub", (span) => {
        // Process the message
        ackOrNack();
        span.end();
      });
    });
  });
  broker.on("error", console.error);

  setInterval(function () {
    broker.publish(
      "demo_pub",
      new Date().toISOString() + ": hello world",
      function (err, publication) {
        tracer.startActiveSpan("sent message demo_pub", (span) => {
          if (err) throw err;
          span.end();
        });
      }
    );
  }, 1000);
});
Pour plus d’informations sur l’instrumentation manuelle, consultez le guide d’instrumentation personnalisée.