مقدمة إلى RabbitMq
RabbitMq هو وسيط رسائل يسمح بإرسال واستقبال الرسائل بين الخدمات المختلفة. وهو وسيط رسائل يقوم بتطبيق بروتوكول وضع الرسائل في قائمة انتظار متقدم (AMQP). مكتوب بلغة البرمجة إرلانج.
يمكن تثبيت RabbitMq على أنظمة تشغيل مختلفة باستخدام مديري الحزم المعنيين. يتطلب RabbitMQ تثبيت Erlang/OTP مسبقًا، يرجى الرجوع إلى الوثائق الرسمية لمزيد من المعلومات.
sudo apt-get install rabbitmq-server
brew install rabbitmq
بمجرد التثبيت، يمكننا تشغيل خادم RabbitMq باستخدام الأمر التالي:
sudo rabbitmq-server
بمجرد بدء تشغيل الخادم، يمكننا الوصول إلى Rabbitmq من تطبيقنا باستخدام المنفذ الافتراضي 5672.
لتمكين وحدة تحكم إدارة RabbitMq، يمكننا تشغيل الأمر التالي:
sudo rabbitmq-plugins enable rabbitmq_management
يمكننا الوصول إلى وحدة تحكم إدارة RabbitMq من خلال زيارة http://localhost:15672/ في متصفحك. اسم المستخدم وكلمة المرور الافتراضية هما ضيف.
للتفاعل مع 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); }); });
يمكننا رؤية الرسائل المرسلة والمستلمة بنجاح من قائمة الانتظار. باستخدام وحدة التحكم في إدارة Rabbitmq.
تعلمنا في هذه المقالة كيفية إعداد RabbitMq والتفاعل مع RabbitMq من NodeJs باستخدام مكتبة amqplib. لقد أنشأنا قائمة انتظار، وأرسلنا رسالة إلى قائمة الانتظار، واستلمنا رسالة من قائمة الانتظار.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3