توسعه نرمافزار امروزه پیشرفت زیادی کرده است و هرچه که نیاز به ساخت نرم افزارهای بزرگتر و سریعتر بیشتر میشود به دنبال آن تکنولوژي ها و ابزارهای پیشرفتهتری برای ساخت و حل مشکلات به وجود آمده در سیستمهای بزرگ نرم افزاری به وجود می آید. در این مطلب در مورد مفهوم ارسال پیام و RabbitMQ صحبت خواهیم کرد.
RabbitMQ یک نرمافزار ارسال پیام است که این برنامههای ارسال پیام به message broker(دلال پیام) و مدیر صف (queue manager) نیز معروف هستند. این برنامهها صف هایی را تعریف میکنند تا برنامههای دیگر بتوانند پیامهای خود را در صف قرار داده و ارسال کنند و کار سیستم message broker این است که پیامها را از صف یکی یکی برداشته و ارسال کند. مانند تصویر زیر:
یک پیام میتواند حاوی هرگونه اطلاعاتی باشد. برای مثال میتواند اطلاعات یک پردازش را داشته باشد که قرار است بر روی اپلیکیشن دیگر یا حتی سرور دیگر اجرا شود یا میتواند یک پیام متنی کوتاه باشد. برنامه message broker پیامها را در خود در داخل یک صف ذخیره میکند و بعد از آنکه یک برنامه دریافتکننده به message broker متصل شد پیامهای متناسب برای او ارسال خواهد شد و برنامه دریافتکننده آنها را پردازش می کند.
یک message broker مانند یک میانجی برای سرویس های مختلف عمل میکند. هدف از اجرای برنامههای message broker کم کردن بار و کاهش زمان پردازش ها در سرور است. این کار را میتوان با استفاده از استفاده ازمنابع پردازشی دیگر انجام داد. برای مثال یک اپلیکیشن تحت وب را در نظر بگیرید که کاربران میتوانند اطلاعات را به وب سایت آپلود کنند. سپس وب سایت فایل pdf از اطلاعات داده شده تولید میکند و برای کاربر ایمیل می کند. فرایند دریافت اطلاعات و ساخت pdf و ارسال ایمیل چند ثانیه زمان خواهد گرفت. ما میتوانیم از message broker استفاده کنیم تا این زمان را کاهش دهیم. با هم این فرایند را در قالب RabbitMQ پیگیری می کنیم.ابتدا وقتی که کاربر اطلاعات مربوط به خود را وارد کرد، برنامه یک پیام "PDF processing" را که شامل همه اطلاعات مهم کاربر است را در یک پیام قرار میدهد و آن را در صف RabbitMQ قرار می هد.
اساس معماری صف پیامها ساده است. به این شکل که یک برنامه کلاینت وجود دارد که producer یا تولید کننده نام دارد که یک پیام را ساخته و در صف پیامها قرار می دهد. برنامههای دیگری تحت عنوان مصرف کننده یا consumer وجود دارند که به صف پیامها متصل شده و پیامهای پردازش شونده را دریافت و پردازش می کنند. یک نرمافزار ممکن است که به عنوان producer و یا به عنوان consumer و یا هردو عمل کند. پیامها تا وقتی که یک consumer آنها را نخوانده است در داخل صف پیامها باقی می مانند.
سیستمهای ارسال پیام به وب سرورها این امکان را میدهند که حتی با درخواست های سنگین و طولانی نیز بتوانند سریع پاسخ دهند. همچنین زمان هایی که میخواهید پردازش های خود را بین چند producer تقسیم کنید تا به نوعی تقسیم بار کرده باشید میتوانید ازاین سیستمها استفاده کنید. برای مثال در مثال سیستم پردازش Pdf که مثال زدیم یک consumer پیام پردازش pdf را دریافت کرده و شروع به پردازش pdf می کند. در همین زمان producer پیام جدیدی را در صف قرار میدهد.
سرور consumer میتواند یک سرور جدا از سرور producer باشد یا هر دو در یک سرور قرار داشته باشند. همچنین مهم نیست که درخواست در یک زبان برنامه نویسی تولید شده باشد و در زبان برنامه نویسی دیگری پردازش شود. این یک مزیت بسیار خوب برای استفاده از مزایای زبانهای برنامه نویسی است و میتوان به یک زبان برنامه نویسی تنها مقید نبود. نکته این است که این دو برنامه producer و consumer هیچ ارتباطی با هم ندارند و میتوان آنها را به هر شکلی پیادهسازی کرد فقط این دو برنامه با هم تبادل پیام دارند. پس مراحل انجام کار مثال ساخت pdf به شکل زیر است.
تصویر زیر این را عمل را به شما نمایش می دهد.
این مطلب ادامه دارد....
با وب سایت Tosinso همراه باشید.
نویسنده: مهدی عادلی فر
منبع: جزیره برنامه نویسی Tosinso.
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود