AMQP مخفف کلمه Advanced Messaging Queuing Protocol برای ارسال و مدیریت پیام بین دو سیستم  و صف بندی آنها استفاده می شود. این سیستم ها میتواند سرور یا پردازش و یا نرم افزار های مختلفی باشند. اگر در زمینه این پروتکل اطلاعات کافی داشته باشید در برخی پروژه ها میتواند برای شما راهگشا و بسیار مفید باشد. در موارد زیر میتوان از این استاندارد استفاده کرد:

  • ارتباط بین چند سازمان
  • ارتباط بین دو تکنولوژی (دو سیستم عامل مختلف یا دو نرم افزار مختلف و …)
  • ایجاد ارتباط بین دو سیستم که به صورت همزمان در دسترس نیستند
  • صف بندی و مدیریت پیام های ارتباطی بین سیستم ها
  • کاهش بار ترافیک پایگاه داده
  • و …

این استاندارد این امکان را برای شما فراهم میکند که دو سیستم مختلف که زبان همدیگر را نمی فهمند به هم متصل نماید.

سناریوی زیر را در نظر بگیرید :

  • بر روی سیستم A شما برنامه ای(با هر زبانی) نوشته اید که فقط کار ارسال ایمیل را انجام می دهد اما در هر دقیقه فقط یک ایمیل. ممکن است در آینده تعداد سیستم هایی مانند A برای افزایش سرعت بیشتر شوند.
  • در سمت دیگر سیستم B نرم افزار دیگری (با هر زبان دیگر) دارید که نیازمند ارسال ایمیل های فراوان است در برخی زمان های خاص هر دقیقه 30 ایمیل.

یکی از راهکار ها این است که بین دو سیستم یک استاندارد تعریف شود و پیام ها با توجه به حجم و سرعت پردازش هر سیستم منتقل شوند. اگر بتوان روندی را تعریف کرد که سیستم B بدون نگرانی از نوع, سرعت و زبان سیستم A پیام های خود را ارسال نماید, در زمان و منابع خود صرفه جویی کرده ایم. اگر سیستم B بخواهد به طور مستقیم با سیستم A در ارتباط باشد بایستی بین ارسال های سریع خود وقفه ایجاد نماید تا سیستم A بتواند به درستی ایمیل ها را از سیستم B دریافت و ارسال نماید. علاوه بر این در هر دو سیستم نیازمند پیاده سازی روشی برای مدیریت سرعت ارسال ها خواهیم داشت. در ضمن اگر در آینده بخواهیم تعداد نرم افزار ها یا سیستم های از نوع A را افزایش دهیم آنگاه در سیستم B بایستی مجددا ارتباط با سیستم های جدید برقرار شود.

با استفاده از AMQP میتوان این موانع را رفع کرد. به طوری که سیستم B بدون در نظر گرفتن اینکه سیستم A چیست؟ چه تعداد است؟ چه نوع اینترفیسی دارد و به چه زبانی نوشته شده است؟ و سرعت سیستم A چه مقدار است؟ می تواند درخواست های خود را به سرویس دهنده AMQP ارسال نماید و این سرویس دهنده AMQP است که پیام ها را صف بندی میکند و به ترتیب به سیستم هایی مانند A بر اساس سرعت عملکرد آنها و زمان درخواست آنها ارسال می نماید. از سویی سیستم B فقط با سرویس دهنده AMQP در ارتباط است. و سیستم هایی مانند A هم تنها با سرویس دهنده AMQP در ارتباطند. در این روش سیستم B میتواند در هر دقیقه 30 پیام(نیاز سیستم B) را به سرویس دهنده AMQP ارسال نماید و سرویس دهنده این پیام ها را به ترتیب و با مدیریت صحیح به سیستم های A می رساند. در انتقال اطلاعات رمزنگاری(TLS) صورت میگیرد لذا امنیت بیشتری حاصل می شود.

علاوه بر مثال ساده ی بالا میتوان با توجه به نیاز خود از AMQP در بخش های مختلفی استفاده کرد. حتی میتوان در سطح شبکه نیز از این پروتکل برای موارد مختلفی استفاده بهینه کرد!

برخی سرویس دهنده های AMQP میتوانند در هر دقیقه میلیون ها پیام را پردازش نمایند. در AMQP میتوان سه حالت مختلف از پیام ها را در نظر گرفت.

  • هر پیام حداکثر یکبار برای worker (سیستم هایی مانند A) ارسال می شود. یعنی ممکن است یک بار ارسال شود و یا اینکه پیام ارسال نشود.
  • هر پیام حداقل یکبار برای worker ارسال می شود. ممکن است یک پیام یک بار و یا چندین بار برای worker ارسال شود.
  • هر پیام تنها یکبار برای worker ارسال می شود.(البته تا زمانی که worker علامتی مبنی بر اینکه پیام را دریافت کرده ارسال نماید )

هنگام کار با سرویس دهنده های AMQP با مفاهیم زیر آشنا خواهید شد :

producer – ارسال کننده پیام

queue – پیامی که در سرویس دهنده AMQP ذخیره می شود.

consumer – دریافت کننده پیام

در مطالب بعدی یکی از سرویس دهنده های مشهور AMQP با نام RabbitMQ را معرفی خواهیم کرد.

RabbitMQ چیست؟

 

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

3 نظر در رابطه با “پروتکل AMQP چیست؟

  1. e

    سلام
    امکانش هست برای کمک به شروع کاربران ، مثال Hello World!! زبان php برای rabbitmq که در سایتش هم هست را به فارسی شرح دهید؟؟؟

    پاسخ

دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*