برنامه نویسی

RabbitMQ: مفاهیم اساسی – انجمن DEV

RabbitMQ یکی از محبوب ترین کارگزاران پیام است که به دلیل انعطاف پذیری و استحکام در پردازش پیام شناخته شده است. این مقاله مفاهیم اصلی RabbitMQ از جمله ناشران، مصرف‌کنندگان، مبادلات، صف‌ها و مکانیسم‌های تشخیص پیام را معرفی می‌کند.

جریان اصلی یک سیستم پیام رسانی

ناشر/تهیه کننده

یک برنامه کاربردی ناشر مسئول انتشار یا تولید پیام است. علاوه بر این، برنامه ای که پیام ها را منتشر می کند نیز می تواند آنها را مصرف کند.

در RabbitMQ، یک پیام منتشر شده باید به یک صف هدایت شود. اگر مصرف کنندگان آنلاین به صف متصل باشند، پیام مستقیماً برای آنها ارسال می شود.

مصرف کننده

یکی مصرف کننده برنامه ای است که پیام ها را از یک صف مصرف می کند و تأیید این پیام ها را انجام می دهد. همانطور که یک ناشر می تواند پیام ها را مصرف کند، یک مصرف کننده نیز می تواند آنها را منتشر کند.

مبادلات

در RabbitMQ، پیام ها مستقیماً به صف ها ارسال نمی شوند. ناشران پیام هایی را به a مبادله، که مسئولیت مسیریابی پیام ها به صف های خاص را بر اساس اتصالات (اتصالات) و کلیدهای مسیریابی (کلیدهای مسیریابی).

انواع مبادلات

مبادلات بر اساس نحوه مسیریابی پیام ها دسته بندی می شوند:

  • مستقیم: پیام ها به صف هایی هدایت می شوند که اتصال آنها (الزام آور) دقیقاً با کلید مسیریابی مطابقت دارد (کلید مسیریابی).

نمونه تبادل مستقیم

  • طرفدار کردن: پیام ها را به تمام صف هایی که به آن متصل هستند هدایت می کند.

Exemplo de Exchange fanout

  • موضوع: یکی بساز مطابقت دادن مبتنی بر استاندارد (حروف عام) بین کلید مسیریابی پیام و کلید صحافی صف.

مثال مبادله مبتنی بر موضوع

  • سرصفحه ها: پیام ها را بر اساس سرصفحه های مشخص شده در پیام مسیریابی می کند.

نمونه ای از مبادله مبتنی بر هدر

دم

همانطور که ردیف ها در RabbitMQ آنها مجموعه‌ای از پیام‌ها مرتب شده‌اند و از منطقی پیروی می‌کنند اول وارد، اول بیرون (FIFO) برای صف بندی و صف بندی. هر پیام به ترتیب پردازش می شود و از ثبات در مصرف اطمینان حاصل می شود.

تصدیق

O تصدیق مکانیزمی است برای تأیید اینکه یک پیام توسط مصرف کننده تحویل و/یا پردازش شده است. به RabbitMQ اجازه می‌دهد بداند چه زمانی می‌تواند پیامی را به‌عنوان کامل علامت‌گذاری کند یا چه زمانی پیام را دوباره ارسال کند.

تاییدیه تحویل

اشکال مختلفی از تشخیص در RabbitMQ وجود دارد که تعیین می کند چه زمانی یک پیام با موفقیت پردازش شده است:

  • تشخیص خودکار: RabbitMQ پیام را به محض تحویل پردازش شده در نظر می گیرد.
  • تشخیص دستی: از مصرف کننده می خواهد که وضعیت پیام را به صراحت گزارش دهد. این می تواند به صورت مثبت یا منفی انجام شود:

    • basic.ack: برای نشان دادن اینکه پیام با موفقیت پردازش شده است استفاده می شود.
    • basic.nack: برای نشان دادن اینکه پردازش ناموفق است استفاده می شود.
    • basic.reject: مشابه basic.nack، اما با محدودیت (از چند پیام به طور همزمان پشتیبانی نمی کند).

هنگامی که تأیید منفی رخ می دهد، پیام را می توان در یک درخواست قرار داد و به a هدایت کرد مبادله نامه مردهبسته به پیکربندی فیلد، یا دور انداخته می شود requeue.

نامه مرده

پیام ها را می توان به عنوان علامت گذاری کرد مرده نامه و در صورت وقوع هر یک از رویدادهای زیر بازنشر می شود:

  1. این پیام توسط یک مصرف کننده به طور منفی تشخیص داده می شود.
  2. پیام به دلیل TTL منقضی می شود (زمان برای زندگی).
  3. پیام از محدودیت اندازه پیکربندی شده بیشتر است.
  4. پیام بیش از حد تلاش برای تحویل است.

حروف مرده به شما این امکان را می دهد که با شکست ها به روشی ساختاریافته برخورد کنید و از انعطاف پذیری بیشتر سیستم اطمینان حاصل کنید.


درک این مفاهیم برای طراحی سیستم های پیام رسانی کارآمد و قابل اعتماد ضروری است. RabbitMQ انعطاف پذیری را برای انطباق با معماری های مختلف ارائه می دهد و آن را به یک ابزار قدرتمند در اکوسیستم برنامه های کاربردی توزیع شده تبدیل می کند.

مراجع

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا