Sobes.tech
Junior — Middle

Ar turite patirties dirbant su RabbitMQ žinučių keitimo sistema?

sobes.tech AI

Atsakymas iš AI

Taip, turiu patirties dirbant su RabbitMQ. Tai žinučių tarpininkas, leidžiantis programoms asinchroniškai keistis duomenimis per eilutes. Node.js dažnai naudojama biblioteka amqplib darbui su RabbitMQ.

Pavyzdys paprasto siuntėjo ir gavėjo:

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);
    }
  });
}

// Siųsti iškvieskite sendMessage(), gauti - receiveMessage()