"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الشروع في استخدام RabbitMq باستخدام NodeJs

الشروع في استخدام RabbitMq باستخدام NodeJs

تم النشر بتاريخ 2024-11-06
تصفح:566

مقدمة إلى RabbitMq

RabbitMq هو وسيط رسائل يسمح بإرسال واستقبال الرسائل بين الخدمات المختلفة. وهو وسيط رسائل يقوم بتطبيق بروتوكول وضع الرسائل في قائمة انتظار متقدم (AMQP). مكتوب بلغة البرمجة إرلانج.

تثبيت RabbitMq

يمكن تثبيت RabbitMq على أنظمة تشغيل مختلفة باستخدام مديري الحزم المعنيين. يتطلب RabbitMQ تثبيت Erlang/OTP مسبقًا، يرجى الرجوع إلى الوثائق الرسمية لمزيد من المعلومات.

  • لينكس
sudo apt-get install rabbitmq-server
  • ماك
brew install rabbitmq

بمجرد التثبيت، يمكننا تشغيل خادم RabbitMq باستخدام الأمر التالي:

sudo rabbitmq-server

Getting started with RabbitMq using NodeJs

بمجرد بدء تشغيل الخادم، يمكننا الوصول إلى Rabbitmq من تطبيقنا باستخدام المنفذ الافتراضي 5672.

لتمكين وحدة تحكم إدارة RabbitMq، يمكننا تشغيل الأمر التالي:

sudo rabbitmq-plugins enable rabbitmq_management

يمكننا الوصول إلى وحدة تحكم إدارة RabbitMq من خلال زيارة http://localhost:15672/ في متصفحك. اسم المستخدم وكلمة المرور الافتراضية هما ضيف.

Getting started with RabbitMq using NodeJs

إعداد RabbitMq مع NodeJs

للتفاعل مع RabbitMq من NodeJs، يمكننا استخدام مكتبة amqplib. يمكننا تثبيت المكتبة باستخدام الأمر التالي:

npm install amqplib

للاتصال بـ RabbitMq من NodeJs وإنشاء قناة للتفاعل مع RabbitMq، يمكننا استخدام الكود التالي:

const amqp = require("amqplib");

const connect = async (url) => {
  const connection = await amqp.connect(url);
  const channel = await connection.createChannel();

  return channel;
};

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.close();
  process.exit(0);
});

الآن، لدينا قناة للتفاعل مع RabbitMq. يمكننا استخدام هذه القناة لإرسال واستقبال الرسائل من RabbitMq. اسمح بتسمية قائمة الانتظار الخاصة بنا mq-test-queue وأرسل رسالة إلى قائمة الانتظار.

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
});

لقد أنشأنا قائمة انتظار mq-test-queue وأرسلنا رسالة Hello World! إلى قائمة الانتظار. لإنشاء قائمة انتظار، استخدمنا طريقة SubmitQueue ولإرسال رسالة إلى قائمة الانتظار، استخدمنا طريقة sendToQueue.

لتلقي رسالة من قائمة الانتظار، يمكننا استخدام طريقة الاستهلاك.

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
  channel.consume("mq-test-queue", (msg) => {
    console.log("Message received", msg.content.toString());
  });
});

تأخذ طريقة الاستهلاك وظيفة رد اتصال وتمرر كائن الرسالة إلى وظيفة رد الاتصال للوصول إلى محتوى الرسالة باستخدام msg.content.toString().

بعد استهلاك الرسالة، نحتاج إلى ack أو nack الرسالة لإزالة الرسالة من قائمة الانتظار. يمكننا استخدام طريقة ack للاعتراف بالرسالة وطريقة nack لرفض الرسالة.

في هذا المثال، سوف نقوم بتأكيد الرسالة بعد استهلاك الرسالة.

const amqp = require("amqplib");

const connect = async (url) => {
  const connection = await amqp.connect(url);
  const channel = await connection.createChannel();

  return channel;
};

connect("amqp://localhost:5672").then((channel) => {
  console.log("Connected to RabbitMQ");
  channel.assertQueue("mq-test-queue");
  console.log("Queue created");
  channel.sendToQueue("mq-test-queue", Buffer.from("Hello World!"));
  console.log("Message sent");
  channel.consume("mq-test-queue", (msg) => {
    console.log("Message received", msg.content.toString());
    channel.ack(msg);
  });
});

Getting started with RabbitMq using NodeJs

يمكننا رؤية الرسائل المرسلة والمستلمة بنجاح من قائمة الانتظار. باستخدام وحدة التحكم في إدارة Rabbitmq.

خاتمة

تعلمنا في هذه المقالة كيفية إعداد RabbitMq والتفاعل مع RabbitMq من NodeJs باستخدام مكتبة amqplib. لقد أنشأنا قائمة انتظار، وأرسلنا رسالة إلى قائمة الانتظار، واستلمنا رسالة من قائمة الانتظار.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/itsvinayak/getting-started-with-rabbitmq-using-nodejs-f17?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3