RabbitMQ یا ربیت‌ام‌کیو یک Message Broker است که پیام‌ها را از Producer دریافت می‌کند و براساس Exchange، Binding و Routing Key به Queueهای مناسب هدایت می‌کند. این ابزار برای پردازش کارهای پس‌زمینه، اعلان‌ها و جداکردن سرویس‌ها مفید است.

اصطلاحات مهم

مفهوموظیفه
Exchangeدریافت پیام و تصمیم مسیر
Queueنگهداری پیام منتظر پردازش
Bindingاتصال Exchange و Queue
Routing Keyکلید انتخاب مقصد
Acknowledgementتایید پردازش مصرف‌کننده
Prefetchحداکثر پیام‌های تحویل‌داده‌شده اما Ackنشده
DLQصف پیام‌های شکست‌خورده یا ردشده

چهار نوع پرکاربرد Exchange

نوعرفتار
Directتطبیق دقیق Routing Key
Topicتطبیق الگوی کلید با wildcard
Fanoutانتشار به همه Queueهای متصل
Headersمسیر براساس Headerها
# Requires: pip install pika; RabbitMQ at localhost
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='order.receipts', durable=True)
channel.basic_publish(
    exchange='', routing_key='order.receipts',
    body=b'{"order_id":42}',
    properties=pika.BasicProperties(delivery_mode=2),
)
connection.close()

ماندگاری صف و پیام، Acknowledgement، Retry، DLQ و کنترل Idempotency باید با نیاز پروژه تنظیم شوند. تفاوت RabbitMQ با کافکا فقط سرعت نیست و به مدل مصرف رویداد مربوط است.

اصطلاحات مرتبط: کافکا، مسیج بروکر، صف پیام، صف پیام‌های ناموفق، تحویل حداقل یک‌بار پیام.