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