صالح فیضی
صالح فیضی
خواندن ۲ دقیقه·۷ ماه پیش

تفاوت دریافت و پردازش پیام از ActiveMQ با PHP و Go !

تصور کنید که ما n ایستگاه داریم، و هر یک از این ایستگاه‌ها هر ثانیه 1.5 پیام را به سمت سیستم MessageBroker ما ارسال می‌کنند.

از سوی دیگر، یک ساب‌اسکرایبر داریم که به سیستم Broker گوش می‌دهد و هر پیامی که دریافت می‌کند را فوراً پردازش می‌دهد.

پیام های دریافتی تو قالب یک حلقه از ActiveMQ دریافت میشن و هر پیام شامل پردازش های مختلفه

مای تو یک مرحله اومدیم یک صفحه میانه تشکیل دادیم که فرایند ران تایم و لحظه ای ما درگیر نشه ولی با افزایش تعداد ایستگاه و پیام ها مدت زمان تاخیر پردازش پیام ها افزایش پیدا میکرد و گاهی هم به دلایل باگ های سیستم حجم field Job ها بیشتر میشد مجبور به حذف صف میانه شدیم :(

این پردازش‌ها شامل محاسبه و شناسایی دو متد زمان، شدت زلزله، نوع لرزش، محدودیت رخداد، یا اعلان‌دهنده پیام، میزان ولتاژ و ... است.

لازم به ذکر که کد PHP ما پس از انجام تعدادی از اصلاحات و بهینه‌سازی‌ها، متوسط زمان اجرای آن را از حداقل ۱۲ تا ۱۰ ثانیه کاهش دادیم و نتیجه فعلی در تصاویری که در این پست به اشتراک گذاشتم رسیدیم.

به طور خلاصه تجربیات قبلی که در این پروژه و وضیعت سورس قبلی رو تو این پست براتون قبلا به اشتراک گذاشتم : سفر غیر حرفه‌ای در دنیای کدنویسی : قسمت اول - چگونه در یک پروژه حساس، با یک دست دور توپ تنیس و یک کیبورد خراب اقدام به توسعه دادیم )

مقایسه ما اصلا حق به جانب نیست و اینکه در هر دو زبان تا جای که لاگ گرفته شده یک کد مشترک نوشته شده است، نه کمتر نه بیشتر !



نتیجه ارتباط با ActiveMQ با php و پردازش پیام
نتیجه ارتباط با ActiveMQ با php و پردازش پیام


نتیجه ارتباط با ActiveMQ با GoLang و پردازش پیام
نتیجه ارتباط با ActiveMQ با GoLang و پردازش پیام


باید بگم توی برخی از پروژه ها حتی ۰.۵ میلی ثانیه ارزش خیلی زیادی داشته باشه که میتونه باعث کاهش کلی هزینه بشه . به شخص باید بگم تو این موردی که خودم درگیرش بودم Go واکنش بهتری نسبت به PHP داشت

activemq phpپردازش پیامgo lang
Technology Researcher And Developer
شاید از این پست‌ها خوشتان بیاید