امیرحسین شریف نژاد
امیرحسین شریف نژاد
خواندن ۳ دقیقه·۲ سال پیش

آشنایی با RabbitMQ: بهترین راهکار برای مدیریت پیام ها در پروژه های میکروسرویسی


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

message broker یک نوع واسط بین میکروسرویسی است که باعث می شود میکروسرویس ها به صورت غیرمستقیم با هم در ارتباط باشند.

مزایا استفاده از Message Broker

  • کاهش وابستگی بین میکرویسرویس ها
  • میشه با میکروسرویس هایی ارتباط برقرار کرد که از زبان های مختلفتی در توسعه آن ها استفاده شده
  • قابلیت صف بندی درخواست ها
  • امنیت بالا

RabbitMQ چیست؟

همان طور که با message broker و مزایای آن آشنا شدید، حالا نوبت میرسه به rabbitMQ، این ابزار یک نوع واسط بین میکروسرویسی است که با زبان Erlang نوشته شده و قابلیت ایجاد و مدیریت صف، روت کردن پیام و اطمینان از اتمام فرایند نیز دارد.

اجزای تشکیل دهنده RabbitMQ

Producer

این بخش به عنوان ایجاد کننده پیام و یا درخواست عمل میکند و درخواست هارا که ممکن هست از هر نوعی باشند (حتی اطلاعات یک فرایند) به صف های مربوطه که برای ارسال به فرستند ایجاد شده اند ارسال میکند.

Consumer

این بخش یک فرستند محسوب می شود که در هر لحظه صف خودش را برسی می کنه و در صورت وجود پیامی یکی یکی آن ها را انجام می دهد.

Exchange (مبدل)

من این بخش مثل یک بانک میدونم که از ۳ نوع باجه تشکیل شده است، که مراجعه کنندگان با توجه به نوع درخواستشان به باجه مربوطه مراجعه میکنند و بعد از ایجاد و ارسال درخواست، متصدی بانک درخواست برای برسی و انجام به صف مخصوص خودش اضافه میکنه.

در زمانی که Producer یک پیام برای پردازش ارسال میکند Exchange با توجه به کلید ارسالی از سمت Producer تشخیص میدهد که پیام را به کدام از صف های ایجاد شده ارسال کند.

نوع های مختلف Exchange (مبدل)

Direct

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

Topic

دومین نوع از مبدل ها، مبدل تاپیک هست که نحوه استفاده از آن نسبت به مبدل های دیگر یکمی تفاوت دارد.

در مبدل دایرکت باید Producer یک کلید خاص که به آن binding key گفته میشه ارسال کند اما در مبدل دایرکت به جای binding key از routing pattern استفاده می شود.

با توجه به ویدئو بالا هنگامی Producer یک درخواست با استفاده از یک روت ارسال میکند مبدل روت ارسالی را با روت های متصل به خودش مطابقت میدهد و در صورتی که شباهتی بین آن ها پیدا کند، درخواست را به صف مربوطه خودش اضافه میکند.

Fanout

نوع آخر مبدل ها، مبدل Fanout هست که کار با این نوع مبدل خیلی آسونه. این نوع مبدل مانند مبدل های دیگر نیست و لازم نیست برای اضافه شدن درخواست در صف یک کلید مخصوص ارسال شود.

در صورتی که مبدل از نوع Fanout باشد، درخواست ارسالی برای همه ی صف های متصل شده به مبدل اضافه می شود.


ممنون که تا این لحظه همراه من بودید. اگر سوال، انتقاد و یا پیشنهادی داشتید خوشحال میشم در بخش کامنت های این مطلب بیان کنید.
منابع:

RabbiMQ

RabbitMQ Exchanges

rabbitmqmessage broker
یک برنامه نویس، که از پیچیدگی بدش میاد
شاید از این پست‌ها خوشتان بیاید