Naar hoofdinhoud gaan
Advanced Message Queuing Protocol (AMQP) is een open standaardprotocol dat berichteninteroperabiliteit tussen systemen mogelijk maakt, ongeacht de leverancier van de message broker of het platform dat ze gebruiken, bijvoorbeeld tussen STOMP- en MQTT-brokers. De AppSignal voor Node.js-integratie voor amqplib en compatibele pakketten zoals Rascal stelt u in staat om het verzenden en ontvangen van berichten in uw applicatie te instrumenteren.

Installatie

Het amqplib-pakket wordt automatisch geïnstrumenteerd door het AppSignal voor Node.js-pakket.

Functies

Wanneer u de amqplib-integratie gebruikt, maakt AppSignal een onderliggende span aan voor elk bericht dat wordt verzonden of ontvangen. Houd er rekening mee dat als de berichten worden ontvangen/verzonden buiten een geïnstrumenteerde context, zoals een webverzoek of achtergrondtaak, het vereist is om handmatig een span aan te maken om de berichtverwerking te omhullen. Hieronder volgt een voorbeeld voor Rascal met behulp van het eenvoudigste voorbeeld uit hun repository, waarbij handmatige instrumentatie is toegevoegd om de berichtverwerking in een span te omhullen.
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);
});
Voor meer informatie over handmatige instrumentatie, zie de gids voor aangepaste instrumentatie.