الان من میخوام بگم سلام، ولی یه سوال، اگه همزمان چند نفر به شما بگن سلام، چی میشه؟ شما اگه تهه چندنخی و مالتی تسکینگم باشی تا چند نفر رو میتونی ساپورت کنی؟
بعضی وقتا برای ما مهمه که سلامشون رو بشنویم و جوابشونو بدیم، بعضی وقتا مهم که فقط بشنویم و جوابم ندادیم مهم نیست، بعضی وقتا هم کلن مهم نیست بشنویم یه گوش در میشه و یکی دروازه.
مثال دیگه هم پُست و ارسال مرسولات پُستیه، که علاوه بر اینکه باید بتونیم همه ی مرسولات رو به ترتیب ارسال کنیم، ممکنه این وسط مرسولات اولویت داری هم لازم باشه که سریعتر ارسال بشن.
خلاصه تا دلتون بخواد میشه از این مثالا زد ولی خلاصش اینه که (همونطور که احتمالا میدونید) ما توی دنیای برنامه نویسی و شبکه و فناوری اطلاعات خیلی جاها لازم داریم سیستمایی مثل کارگزار صف (یا همون Message broker) یا مثلاً میان افزار پیام محور (یا همون Message-oriented middleware) داشته باشیم که ارسال و دریافت پیغاما و اطلاعات رو برامون مدیریت کنن.
اوایل میومدن داخل زبونهای برنامه نویسی و پلتفرم های مختلف ساز و کار لازمه رو تا حدودی که کارشون رو را بندازه پیاده سازی میکردن، اما بعد از یه مدت لازم شد که زبونای مختلف برنامه نویسی و پلتفرمای متفاوت بتونن با همدیگه ارتباط برقرار کنن و برای همدیگه پیغام بفرستن. و با گذر زمان و جا افتادن ساز و کار های مایکروسرویسی توی برنامه نویسی این نیاز خیلی بیش از قبل احساس شد.
یکی از بهترین انتخاب ها که توی چند سال اخیر هم خیلی طرفدار داشته و توی ایران هم به مرور زمان استفاده ازش بیشتر و بیشتر میشه، ربیت ام کیو RabbitMQ هست. (من توی ادامه این مقاله بخاطر سهولت نگارش و خوانایی بهتر به جای ربیت ام کیو میگم ربیت)

شرکت Rabbit Technologies Ltd توسعه ربیت رو شروع کرد و بعد از مدتی شرکت SpringSource که بخشی از VMWare هست سال 2010 اون رو خرید. ربیت اوایل پروتکل AMQP رو ساپورت میکرد بعدا پروتوکل های دیگه مثل STOMP و MQTT و ... رو هم پشتیبانی کرد.
مثلا وقتی بخوایم از پروتکل AMQP توی ربیت استفاده کنیم به ما اجازه میده یسری صف با یسری کانفیگ و تنظیمات ایجاد کنیم و یسری اصطلاحاً producer میتونن روی صف هامون پیغام بذارن و یسری اصطلاحاً consumers میتونن پیغام هارو بردارن. و میشه با ایجاد exchange مدیریت دریافت و ارسال پیامهارو بهینه تر کرد.
برای استفاده از ربیت باید از کلاینت مربوط به زبونی که دارید کد میزنید استفاده میکنیم، برای مثال اینجا برای اینکه بتونیم به کمک زبون گولنگ با ربیت ارتباط برقرار کنیم از این ریپازیتوری استفاده میکنیم.
برای ارسال پیام روی ربیت (با فرض اینکه ربیت روی لوکال هاست شما نصب شده و از پورت دیفالت خود ربیت یعنی 5672 استفاده میکنه) میتونید نگاهی به این لینک بندازید و برای دریافت پیغام این یکی لینک.
این ها مثالای ساده از استفاده از ربیت بودن. به کمک کد مثال اول میتونید خیلی راحت پیغام بفرستید روی ربیت و به کمک مثال دوم میتونید خیلی راحت پیغام از روی ربیت بردارید. ولی همونطور که گفتیم ربیت exchange هم داره که کمی پیچیده تر هستن.
راستش رو بخواید من معمولا لینک نمیذارم فقط که ارجاع بدم، اول هم میخواستم با توجه به اینکه مقاله فارسی در این زمینه خیلی جامع و کامل و مفصل وجود نداره، یعالمه مثال به جزئیات کامل از ارتباط با ربیت و نحوه استفاده ازش بنویسم ولی به دلایلی دیدم نمیرسم، واسه همین این مقاله رو در حد همین آشنایی اولیه با ربیت منتشر میکنم در آینده اگه وقت شد امیدوارم بتونم مقاله جامعتری بنوسیم.
ممنون که تا اینجا خوندید، اگه تجربه ای توی استفاده از ربیت دارید یا لینکی میشناسید که برای خواننده ها میتونه مفید باشه لطفاً توی کامنت اضافه کنید. اگر هم خواستید بصورت کامل آموزش رسمی خود ربیت رو بخونید میتونید به این لینک سری بزنید (برای زبونای مختلف برنامه نویسی مثالای خیلی خوبی داره که به شدت میتونه هم برای شروع کار با ربیت هم حرفه ای تر شدن کمک بکنه)
منتشر شده در ویرگول توسط محمد قدسیان https://virgool.io/@mohammad.ghodsian
https://virgool.io/@mohammad.ghodsian/rabbitmq-a3y5uiwiae0d