اگر که بر روی پروژه ای کار میکنید که از چند میکروسرویس تشکیل شده و ابعاد آن از لحاظ ساختاری بزرگ است این مطلب میتونه به شما برای مدیریت بهتر فرایند ها بین میکروسرویسی کمک کنه.
ابزاری که قصد دارم به شما معرفیش کنم RabbitMQ که یک Message Broker محسوب میشه.
message broker یک نوع واسط بین میکروسرویسی است که باعث می شود میکروسرویس ها به صورت غیرمستقیم با هم در ارتباط باشند.
همان طور که با message broker و مزایای آن آشنا شدید، حالا نوبت میرسه به rabbitMQ، این ابزار یک نوع واسط بین میکروسرویسی است که با زبان Erlang نوشته شده و قابلیت ایجاد و مدیریت صف، روت کردن پیام و اطمینان از اتمام فرایند نیز دارد.
این بخش به عنوان ایجاد کننده پیام و یا درخواست عمل میکند و درخواست هارا که ممکن هست از هر نوعی باشند (حتی اطلاعات یک فرایند) به صف های مربوطه که برای ارسال به فرستند ایجاد شده اند ارسال میکند.
این بخش یک فرستند محسوب می شود که در هر لحظه صف خودش را برسی می کنه و در صورت وجود پیامی یکی یکی آن ها را انجام می دهد.
من این بخش مثل یک بانک میدونم که از ۳ نوع باجه تشکیل شده است، که مراجعه کنندگان با توجه به نوع درخواستشان به باجه مربوطه مراجعه میکنند و بعد از ایجاد و ارسال درخواست، متصدی بانک درخواست برای برسی و انجام به صف مخصوص خودش اضافه میکنه.
در زمانی که Producer یک پیام برای پردازش ارسال میکند Exchange با توجه به کلید ارسالی از سمت Producer تشخیص میدهد که پیام را به کدام از صف های ایجاد شده ارسال کند.
اولین نوع از مبدل ها، مبدل دایرکت هست که درخواست و یا پیام را به صفی که عینا همان کلید برایش بایند شده اضافه میکند
دومین نوع از مبدل ها، مبدل تاپیک هست که نحوه استفاده از آن نسبت به مبدل های دیگر یکمی تفاوت دارد.
در مبدل دایرکت باید Producer یک کلید خاص که به آن binding key گفته میشه ارسال کند اما در مبدل دایرکت به جای binding key از routing pattern استفاده می شود.
با توجه به ویدئو بالا هنگامی Producer یک درخواست با استفاده از یک روت ارسال میکند مبدل روت ارسالی را با روت های متصل به خودش مطابقت میدهد و در صورتی که شباهتی بین آن ها پیدا کند، درخواست را به صف مربوطه خودش اضافه میکند.
نوع آخر مبدل ها، مبدل Fanout هست که کار با این نوع مبدل خیلی آسونه. این نوع مبدل مانند مبدل های دیگر نیست و لازم نیست برای اضافه شدن درخواست در صف یک کلید مخصوص ارسال شود.
در صورتی که مبدل از نوع Fanout باشد، درخواست ارسالی برای همه ی صف های متصل شده به مبدل اضافه می شود.
ممنون که تا این لحظه همراه من بودید. اگر سوال، انتقاد و یا پیشنهادی داشتید خوشحال میشم در بخش کامنت های این مطلب بیان کنید.
منابع: