RabbitMQ: سرویس کارگزار پیام منبع باز

Summarize this content to 400 words in Persian Lang
RabbitMQ یک سیستم کمکی سرویس کارگزار پیام منبع باز با معماری میکروسرویس است. به عنوان مثال، فرض کنید می خواهید یک ویدیو را در YouTube آپلود کنید، در پشت صحنه، ممکن است یک سرویس برای آپلود ویدیو وجود داشته باشد، یکی برای اطلاع رسانی به افرادی که مشترک نویسنده هستند و غیره. سرویس آپلود رویدادهای “ویدیوی جدید” را به جریان RabbitMQ اضافه می کند. چندین برنامه باطن می توانند در آن جریان مشترک شوند و رویدادهای جدید را مستقل از یکدیگر بخوانند.
با همان مثال سرویس پخش ویدیو، تولید کننده زمانی است که ویدیو در پلتفرم آپلود می شود که می تواند از طریق یک API اتفاق بیفتد. سپس API پیامی با داده های مورد نیاز تولید می کند که آن را در یک صرافی منتشر می کند. سپس صرافی آن را به یک یا چند صف هدایت می کند که با یک کلید مسیریابی و اتصال به صرافی مرتبط هستند. سپس پیام در صف منتظر می ماند تا توسط مصرف کننده که در این مورد سرویس آپلود است مصرف شود.
صرافی می تواند به یکی از این سه روش عمل کند:
ارسال پیام به طور مستقیم به یک صف خاص یا
صف های متعدد با الگوی مشترک با استفاده از موضوعات یا
به تمام صف های موجود
یک مثال اساسی از ارسال پیام به RabbitMQ به صورت محلی. کد زیر برای ارسال پیام به صف است. پیش نیاز این کار نصب سرور RabbitMQ و amqplib به صورت محلی است.
//library that implements messaging protocol
import { connect} from ‘amqplib’
// connect to rabbitmq locally
const connection = await connect(‘amqp://localhost’);
const channel = await connection.createChannel();
const queue = ‘test’;
const message = ‘hello world’
// queue can be durable either stored in RAM or memory
await channel.assertQueue(queue, {durable: false});
// message is produced
channel.sendToQueue(queue, Buffer.from(message));
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اکنون که پیام به صف ارسال می شود، برای دریافت پیام به فایل دیگری نیاز داریم که می تواند یک سرور مشترک در همان صف و کلاینت RabbitMQ باشد.
//library that implements messaging protocol
import { connect} from ‘amqplib’
// connect to rabbitmq
const connection = await connect(‘amqp://localhost’);
const channel = await connection.createChannel();
const queue = ‘test’;
await channel.assertQueue(queue, {durable: false});
//consume the message
channel.consume(queue, (message) => {
const msg = {…message}
console.log(“Received message: ” + msg.content)
})
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
هنگامی که هر دو فایل به طور همزمان اجرا می شوند، پیام باید در ترمینال فایل دوم به عنوان “سلام جهان” دریافت شود.
از طرف دیگر، میتوانید از CloudAMQP برای ایجاد یک نمونه RabbitMQ در ابر استفاده کنید و رشته اتصال localhost را با رشتهای روی ابر جایگزین کنید. اگر به یک وبلاگ دقیق تر RabbitMQ نیاز دارید، در نظرات به من اطلاع دهید.
تا آن زمان، برای اطلاعات بیشتر، من را در توییتر دنبال کنید
RabbitMQ یک سیستم کمکی سرویس کارگزار پیام منبع باز با معماری میکروسرویس است. به عنوان مثال، فرض کنید می خواهید یک ویدیو را در YouTube آپلود کنید، در پشت صحنه، ممکن است یک سرویس برای آپلود ویدیو وجود داشته باشد، یکی برای اطلاع رسانی به افرادی که مشترک نویسنده هستند و غیره. سرویس آپلود رویدادهای “ویدیوی جدید” را به جریان RabbitMQ اضافه می کند. چندین برنامه باطن می توانند در آن جریان مشترک شوند و رویدادهای جدید را مستقل از یکدیگر بخوانند.
با همان مثال سرویس پخش ویدیو، تولید کننده زمانی است که ویدیو در پلتفرم آپلود می شود که می تواند از طریق یک API اتفاق بیفتد. سپس API پیامی با داده های مورد نیاز تولید می کند که آن را در یک صرافی منتشر می کند. سپس صرافی آن را به یک یا چند صف هدایت می کند که با یک کلید مسیریابی و اتصال به صرافی مرتبط هستند. سپس پیام در صف منتظر می ماند تا توسط مصرف کننده که در این مورد سرویس آپلود است مصرف شود.
صرافی می تواند به یکی از این سه روش عمل کند:
- ارسال پیام به طور مستقیم به یک صف خاص یا
- صف های متعدد با الگوی مشترک با استفاده از موضوعات یا
- به تمام صف های موجود
یک مثال اساسی از ارسال پیام به RabbitMQ به صورت محلی. کد زیر برای ارسال پیام به صف است. پیش نیاز این کار نصب سرور RabbitMQ و amqplib به صورت محلی است.
//library that implements messaging protocol
import { connect} from 'amqplib'
// connect to rabbitmq locally
const connection = await connect('amqp://localhost');
const channel = await connection.createChannel();
const queue = 'test';
const message = 'hello world'
// queue can be durable either stored in RAM or memory
await channel.assertQueue(queue, {durable: false});
// message is produced
channel.sendToQueue(queue, Buffer.from(message));
اکنون که پیام به صف ارسال می شود، برای دریافت پیام به فایل دیگری نیاز داریم که می تواند یک سرور مشترک در همان صف و کلاینت RabbitMQ باشد.
//library that implements messaging protocol
import { connect} from 'amqplib'
// connect to rabbitmq
const connection = await connect('amqp://localhost');
const channel = await connection.createChannel();
const queue = 'test';
await channel.assertQueue(queue, {durable: false});
//consume the message
channel.consume(queue, (message) => {
const msg = {...message}
console.log("Received message: " + msg.content)
})
هنگامی که هر دو فایل به طور همزمان اجرا می شوند، پیام باید در ترمینال فایل دوم به عنوان “سلام جهان” دریافت شود.
از طرف دیگر، میتوانید از CloudAMQP برای ایجاد یک نمونه RabbitMQ در ابر استفاده کنید و رشته اتصال localhost را با رشتهای روی ابر جایگزین کنید. اگر به یک وبلاگ دقیق تر RabbitMQ نیاز دارید، در نظرات به من اطلاع دهید.
تا آن زمان، برای اطلاعات بیشتر، من را در توییتر دنبال کنید