Pular para o conteúdo principal
O Advanced Message Queuing Protocol (AMQP) é um protocolo padrão aberto que facilita a interoperabilidade de mensagens entre sistemas, independentemente do fornecedor ou plataforma de message broker utilizada, por exemplo, entre brokers STOMP e MQTT. A integração do AppSignal para Node.js com amqplib e pacotes compatíveis, como Rascal, permite instrumentar o envio e o recebimento de mensagens na sua aplicação.

Instalação

O pacote amqplib é instrumentado automaticamente pelo pacote AppSignal para Node.js.

Recursos

Ao usar a integração amqplib, o AppSignal criará um span filho para cada mensagem que for enviada ou recebida. Observe que, se as mensagens forem recebidas/enviadas fora de um contexto instrumentado, como uma requisição web ou um job em background, é necessário criar manualmente um span para envolver o processamento da mensagem. Abaixo está um exemplo para Rascal usando o exemplo mais simples encontrado em seu repositório, com instrumentação manual adicionada para envolver o processamento da mensagem em um 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);
});
Para mais informações sobre instrumentação manual, consulte o guia de instrumentação personalizada.