Sobes.tech
Junior — Middle

Vai jums ir pieredze ar RabbitMQ ziņojumu apmaiņas sistēmas izmantošanu?

sobes.tech AI

Atbilde no AI

Jā, man ir pieredze ar RabbitMQ. Tas ir ziņojumu starpnieks, kas ļauj lietotnēm asenhroni veikt datu apmaiņu caur rindām. Node.js bieži izmanto bibliotēku amqplib, lai strādātu ar RabbitMQ.

Piemērs vienkāršam sūtītājam un saņēmējam:

const amqp = require('amqplib');

async function sendMessage() {
  const connection = await amqp.connect('amqp://localhost');
  const channel = await connection.createChannel();
  const queue = 'task_queue';
  const msg = 'Hello RabbitMQ!';

  await channel.assertQueue(queue, { durable: true });
  channel.sendToQueue(queue, Buffer.from(msg), { persistent: true });
  console.log(" [x] Sent '%s'", msg);

  setTimeout(() => {
    connection.close();
    process.exit(0);
  }, 500);
}

async function receiveMessage() {
  const connection = await amqp.connect('amqp://localhost');
  const channel = await connection.createChannel();
  const queue = 'task_queue';

  await channel.assertQueue(queue, { durable: true });
  channel.prefetch(1);
  console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue);

  channel.consume(queue, (msg) => {
    if (msg !== null) {
      console.log(" [x] Received %s", msg.content.toString());
      channel.ack(msg);
    }
  });
}

// Sūtīšanai izsauciet sendMessage(), saņemšanai - receiveMessage()