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

اگه چندین ساله که در حوزه بک اند فعالیت دارید ممکنه اسم RabbitMQ رو شنیده باشید اگر نه هم اشکال نداره با من همراه باشید تا توی این مقاله به صورت کامل با این غول بزرگ آشنا بشیم و یکبار برای همیشه کاربرد و استفاده اون رو درک کنیم.RabbitMQ چیست ؟ و چه استفاده ای داردRabbitMQ یک نرم افزار برای انتقال پیام بین سیستم ها یا به عبارتی message-broker software که با استفاده از اون می تونیم بین سیستم های مختلف پیام ارسال کنیم و عملیات صف بندی به خوبی انجام بدیم.RabbitMQ به زبان سادهاین سیستم به ما کمک می کنه که بین چندین برنامه مختلف که حتی با زبان های مختلفی هم نوشته شدن بتونیم ارتباط برقرار کنیم‌ البته توی RabbitMQ چیزی وجود داره به نام صف یا همون queue که پیام هایی که ما برای برنامه های دیگه ارسال می کنیم درون یک صف قرار می ده و برنامه مقصد به ترتیب و طبق تنظیماتی که ما براش تعریف می کنیم اون پیام هارو میخونه و پردازش میکنه (البته اگه نیاز به پردازش داشته باشه).RabbitMQRabbitMQ یکی از بهترین انتخاب ها برای ارتباط برقرار کردن بین microservice ها می باشد. و هم اکنون خیلی ها ازش استفاده میکنن.جالبی RabbitMQ اینجاست که ما می تونیم با برنامه هایی ارتباط برقرار کنیم که حتی در یک سرور دیگه باشن. مثلا یک برنامه با زبان php در سرور هلند قرار داره و یک برنامه دیگه با زبان python در سرور ایران. این دوتا به راحتی می تونن از طریق RabbitMQ با هم ارتباط برقرار کنن و کنار هم کار کنن.یکی دیگه از ویژگی های خیلی جالب و مهم RabbitMQ اینه که ما می تونیم چندین سرور برای یک کار تعریف کنیم و در صورتی که یک سرور از کار بی افته سرور دیگه جاشو بگیره و وظایفشو انجام بده. یا RabbitMQ میتونه کار هارو بین این سرور ها با تنظیمات ما به اشتراک بزاره تا فشار کمتری به سرور ها بیاد و سرعت پردازش بالا بره.RabbitMQمثال: فکر کنید یک بخش از سیستم ما pdf بهش میدیم اون تمام صفحات اونو به صورت jpg بر میگردونه خب ما اگه این کارو با سرور اصلی انجام بدیم فشار زیادی به سرور میاد و اگه این کار در یک زمان واحد زیاد انجام بشه ممکنه سرور down بشه. برای همین این کارو به عهده یک سرویس دیگه میزاریم که فقط کارش همینه . با RabbitMQ این وظایف درون یک صف واحد بین این سرویس ها به اشتراک بذاریم و البته اگه یک روز یکی از این سرویس ها قطع شد بقیه به درستی کار خودشونو ادامه میدن. اینم در جریان باشید که ما بعدا می تونیم سرویس های دیگه هم به این چرخه اضافه کنیم.کمی آشنایی با RabbitMQخب دیگه وقتشه یکم با کانسپت اولیه RabbitMQ آشنا بشیم. ما دوتا مفهوم اصلی توی این سیستم داریم۱-producers ۲-consumersproducers کسی یا برنامه ای هست که پیام اولیه رو تولید میکنه و به صف پردازش ارسال میکنه و consumers کسی یا برنامه ای هست که این پیام هارو به ترتیب از صف میگیره و پردازش میکنه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&amp;amp;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