انواع Exchange: Direct، Fanout، Topic، Headers

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/06/25
  • تعداد بازدید: 2

در RabbitMQ، Exchange مسئول مسیریابی پیام‌ها از Producer به صف‌ها (Queues) است. انواع مختلفی از Exchange وجود دارد که هر کدام الگوی مسیریابی متفاوتی ارائه می‌دهند: Direct، Fanout، Topic و Headers.

Direct Exchange

Direct Exchange پیام‌ها را بر اساس Routing Key دقیق به صف‌های مشخص هدایت می‌کند. تنها صف‌هایی که Routing Key آن‌ها با کلید پیام مطابقت داشته باشد پیام را دریافت می‌کنند.

# ایجاد Direct Exchange و صف
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
channel.queue_declare(queue='error_logs')
channel.queue_bind(exchange='direct_logs', queue='error_logs', routing_key='error')

Fanout Exchange

Fanout Exchange پیام‌ها را بدون توجه به Routing Key به همه صف‌های متصل پخش می‌کند. این نوع Exchange برای انتشار پیام به چندین مصرف‌کننده کاربرد دارد.

# ایجاد Fanout Exchange
channel.exchange_declare(exchange='broadcast', exchange_type='fanout')
channel.queue_declare(queue='queue1')
channel.queue_declare(queue='queue2')
channel.queue_bind(exchange='broadcast', queue='queue1')
channel.queue_bind(exchange='broadcast', queue='queue2')

Topic Exchange

Topic Exchange پیام‌ها را بر اساس الگوهای متنی (Wildcard) Routing Key هدایت می‌کند. این نوع Exchange انعطاف‌پذیری بالایی در مسیریابی دارد.

# ایجاد Topic Exchange
channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
channel.queue_declare(queue='queue_critical')
channel.queue_bind(exchange='topic_logs', queue='queue_critical', routing_key='*.critical')

Headers Exchange

Headers Exchange پیام‌ها را بر اساس هدرهای پیام هدایت می‌کند، نه Routing Key. این نوع برای سناریوهایی که مسیریابی پیچیده با پارامترهای متنوع نیاز دارند مناسب است.

# ایجاد Headers Exchange
channel.exchange_declare(exchange='header_logs', exchange_type='headers')
channel.queue_declare(queue='queue_header')
channel.queue_bind(exchange='header_logs', queue='queue_header', arguments={'x-match':'all', 'format':'pdf', 'type':'report'})

جمع‌بندی

انتخاب نوع Exchange به نوع مسیریابی پیام‌ها بستگی دارد. Direct برای مسیریابی دقیق، Fanout برای انتشار همزمان، Topic برای الگوهای پیچیده و Headers برای مسیریابی بر اساس پارامترهای متنوع استفاده می‌شوند. درک درست این انواع، طراحی سیستم‌های پیام‌رسانی انعطاف‌پذیر و کارآمد را ممکن می‌سازد.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.