بطور کلی مهمترین هدف Message Queueها در صنعت نرمافزار ایجاد ارتباط بین سیستمهای نرمافزاری مختلف بهصورت آسنکرون یا غیر همزمان است. همچنین Message Queueها ایجاد و نگهداری برنامهها را ساده میکند و باعث کاهش پیچیدگی میشود، وقتیکه مقیاس نرمافزار بزرگ میشود و تعداد سیستمها بالا میرود استفاده از آن سبب کاهش پیچیدگی و افزایش بهرهوری میگردد. در Message Queueing یا صفبندی پیام همه پیامها توسط یک برنامه تولیدکننده(Producer)، تولید میشوند و به یک صف پیام، Push میشوند. این فرایند به Enqueuingمعروف است. پیامهای Push شده در این صف باقی میمانند تا زمانیکه یک برنامه مصرفکننده(Consumer) متصل شده و این پیامها را واکشی کند. این فرایند به Dequeuingمعروف است. هر دو فرایندDequeueوEnqueue بهطور مستقل توسط برنامههای ConsumerوProducer انجام میشوند و این امکان را داریم که یک پیام را در انتظار دریافت یکConsumer، در یک صف پیام نگه داریم بنابراین فرآیند Push شدن پیام به صف توسط برنامه Consumerبه عنوان Message Queueing صف بندی پیام شناخته می شود. در صنعت نرمافزار Message Queue های مختلفی ساخته شدند مثلKafkaوRabbit MQ که هدف اصلی تمام آنها ایجاد ارتباط بین چند برنامه یا سرویس مختلف در بهینهترین زمان ممکن است.
ابزارRabbit MQ یک Message broker مانند یک میانجی برای سرویسهای مختلف عمل میکند. هدف از اجرای برنامههایMessage broker کم کردن بار و کاهش زمان پردازش ها در سرور است. و یکی از بهترین انتخابها برای ارتباط برقرار کردن بینMicroserviceها میباشد.
به بیان سادهتر یک نرمافزار برای انتقال پیام بین سیستمها است که با استفاده از آن میتوانیم بین سیستمهای مختلف پیام ارسال کنیم و عملیات صفبندی بهخوبی انجام دهیم.و از معایب آن میتوان بهسرعت کم آن اشاره کرد.
ابزارKafka یک پلتفرم توزیعشده برای پردازش دادههای جریانی بوده و قادر به رسیدگی و پردازش رویدادها بسیار زیاد بهصورت همزمان است. توانایی Kafka برای ارائه جریانهای عظیم داده و پیام، همراه با تحمل خطای بالا، آن را جایگزین برخی از سیستمهای پیامرسانی مرسوم مانند AMQPوJMSو غیره کردهاست.
اصلیترین کاربردهای Kafkaشامل موارد زیر است:
۱- ایجاد خطوط انتقال دادههای جریانی و بهنگام که دادهها را میان سیستمها و برنامهها بهصورت قابلاطمینانی انتقال داده و ردوبدل میکنند.
۲- ایجاد برنامههای کاربردی برای دادههای جریانی و به هنگام که بهموقع نسبتبه جریانی از دادهها واکنش نشان داده و آنها را انتقال میدهد.
منابع :
https://stiller.blog/2020/02/rabbitmq-vs-kafka-an-architects-dilemma-part-1/
https://www.rabbitmq.com/getstarted.html