محمد عبدی
محمد عبدی
خواندن ۵ دقیقه·۵ سال پیش

RabbitMQ چیست ؟ و چه استفاده ای دارد ؟

اگه چندین ساله که در حوزه بک اند فعالیت دارید ممکنه اسم RabbitMQ رو شنیده باشید اگر نه هم اشکال نداره با من همراه باشید تا توی این مقاله به صورت کامل با این غول بزرگ آشنا بشیم و یکبار برای همیشه کاربرد و استفاده اون رو درک کنیم.

RabbitMQ چیست ؟ و چه استفاده ای دارد
RabbitMQ چیست ؟ و چه استفاده ای دارد


RabbitMQ یک نرم افزار برای انتقال پیام بین سیستم ها یا به عبارتی message-broker software که با استفاده از اون می تونیم بین سیستم های مختلف پیام ارسال کنیم و عملیات صف بندی به خوبی انجام بدیم.

RabbitMQ به زبان ساده

این سیستم به ما کمک می کنه که بین چندین برنامه مختلف که حتی با زبان های مختلفی هم نوشته شدن بتونیم ارتباط برقرار کنیم‌ البته توی RabbitMQ چیزی وجود داره به نام صف یا همون queue که پیام هایی که ما برای برنامه های دیگه ارسال می کنیم درون یک صف قرار می ده و برنامه مقصد به ترتیب و طبق تنظیماتی که ما براش تعریف می کنیم اون پیام هارو میخونه و پردازش میکنه (البته اگه نیاز به پردازش داشته باشه).

RabbitMQ
RabbitMQ

RabbitMQ یکی از بهترین انتخاب ها برای ارتباط برقرار کردن بین microservice ها می باشد. و هم اکنون خیلی ها ازش استفاده میکنن.

جالبی RabbitMQ اینجاست که ما می تونیم با برنامه هایی ارتباط برقرار کنیم که حتی در یک سرور دیگه باشن. مثلا یک برنامه با زبان php در سرور هلند قرار داره و یک برنامه دیگه با زبان python در سرور ایران. این دوتا به راحتی می تونن از طریق RabbitMQ با هم ارتباط برقرار کنن و کنار هم کار کنن.

یکی دیگه از ویژگی های خیلی جالب و مهم RabbitMQ اینه که ما می تونیم چندین سرور برای یک کار تعریف کنیم و در صورتی که یک سرور از کار بی افته سرور دیگه جاشو بگیره و وظایفشو انجام بده. یا RabbitMQ میتونه کار هارو بین این سرور ها با تنظیمات ما به اشتراک بزاره تا فشار کمتری به سرور ها بیاد و سرعت پردازش بالا بره.

RabbitMQ
RabbitMQ

مثال: فکر کنید یک بخش از سیستم ما pdf بهش میدیم اون تمام صفحات اونو به صورت jpg بر میگردونه خب ما اگه این کارو با سرور اصلی انجام بدیم فشار زیادی به سرور میاد و اگه این کار در یک زمان واحد زیاد انجام بشه ممکنه سرور down بشه. برای همین این کارو به عهده یک سرویس دیگه میزاریم که فقط کارش همینه . با RabbitMQ این وظایف درون یک صف واحد بین این سرویس ها به اشتراک بذاریم و البته اگه یک روز یکی از این سرویس ها قطع شد بقیه به درستی کار خودشونو ادامه میدن. اینم در جریان باشید که ما بعدا می تونیم سرویس های دیگه هم به این چرخه اضافه کنیم.


کمی آشنایی با RabbitMQ

خب دیگه وقتشه یکم با کانسپت اولیه RabbitMQ آشنا بشیم. ما دوتا مفهوم اصلی توی این سیستم داریم

۱-producers

۲-consumers

producers کسی یا برنامه ای هست که پیام اولیه رو تولید میکنه و به صف پردازش ارسال میکنه و consumers کسی یا برنامه ای هست که این پیام هارو به ترتیب از صف میگیره و پردازش میکنه

RabbitMQ
RabbitMQ

بین producers و consumers ۲تا مفهوم وجود داره به نام های exchange و queue که قبلا درباره queue توضیح دادم که یک صف که درخواست توی اون جمع میشه و consumers ها به ترتیب اونارو بر میدارن و پردازش می کنند. ولی exchange یکم توضیح سخته نیاز هست که طی فرآیند آموزش باهاش درگیر بشید تا یاد بگیرید اما اینو بدونید که اصلا چیز پیچیده ای نیست به طور کلی روش ارسال پیام از producers به صف هاست که ۴ تا حالت داره Direct - Fanout - Topic - Headers  که هرکدوم مزایا و معایب خودشونو دارن

آموزش کامل و کاربردی RabbitMQ

خب حالا که به صورت کلی فهمیدید RabbitMQ چیه و چیکار میکنه وقتشه که با یک آموزش خوب و کاربردی کارشو تموم کنید و توی پروژه های بزرگ خودتون ازش استفاده کنید.

۱- آموزش تصویری فارسی

یکی از بهترین آموزش های فارسی که دیدم برای RabbitMQ تولید شده و به خوبی این موضوع پوشش داده سایت خوب mongard که از لینک زیر می تونید این آموزش به صورت آنلاین تماشا کنید

https://www.mongard.ir/courses/rabbitmq/

۲- آموزش تصویری انگلیسی

یکسری از دوستان هم طرفدار آموزش های انگلیسی هست که می تونند از آموزش های زیر استفاده کنند.

https://www.youtube.com/watch?v=R8pMwciZ95U&t=1450s

آhttps://www.youtube.com/watch?v=Cie5v59mrTg&t=103s

۳- آموزش متنی انگلیسی

و در نهایت روش سوم که به نظرم روش خیلی خوبیه استفاده از خود سایت RabbitMQ که البته نیاز داره زبان انگلیسی شما در سطح خوبی باشه و همینطور کانسپت اولیه RabbitMQ باهاش آشنا باشید.

https://www.rabbitmq.com/getstarted.html


منبع تصاویر:

https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html

rabbitmqAMQPmessage brokerمیکروسرویسmicroservices
من محمد عبدی یه برنامه نویس ام که چندسالی هست توی این دنیا بی پایان دست و پا میزنم. اینجا از تجربیاتم مینویسم.
شاید از این پست‌ها خوشتان بیاید