استفاده از Routing Key برای هدایت پیام‌ها

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

Routing Key یکی از مهم‌ترین مفاهیم RabbitMQ است که تعیین می‌کند پیام‌ها چگونه از Exchange به Queue هدایت شوند. با استفاده از Routing Key، می‌توان پیام‌ها را به صف‌های مشخص یا گروهی از صف‌ها منتقل کرد.

نحوه عملکرد Routing Key

وقتی Producer پیامی را به یک Exchange ارسال می‌کند، Exchange با توجه به نوع خود و Bindingها، Routing Key پیام را بررسی کرده و تصمیم می‌گیرد که پیام به کدام Queue ارسال شود.

مثال با Direct Exchange

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

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

# تعریف Exchange و Queue
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
channel.queue_declare(queue='error_queue')
channel.queue_bind(exchange='direct_logs', queue='error_queue', routing_key='error')

# ارسال پیام با Routing Key
channel.basic_publish(exchange='direct_logs',
                      routing_key='error',
                      body='پیام خطا!')
print("پیام ارسال شد")
connection.close()

مثال با Topic Exchange

در Topic Exchange می‌توان از الگوهای متنی (Wildcards) استفاده کرد. این امکان مسیریابی پیچیده و انعطاف‌پذیر فراهم می‌کند:

channel.exchange_declare(exchange='topic_logs', exchange_type='topic')
channel.queue_declare(queue='critical_logs')
channel.queue_bind(exchange='topic_logs', queue='critical_logs', routing_key='*.critical')

# ارسال پیام با Routing Key مطابق با الگو
channel.basic_publish(exchange='topic_logs',
                      routing_key='system.critical',
                      body='پیام بحرانی سیستم')

نکات مهم

  • Routing Key در Direct Exchange باید دقیقاً مطابق با کلید Binding باشد.
  • در Topic Exchange، از کاراکتر * برای یک بخش و # برای چند بخش استفاده می‌شود.
  • استفاده صحیح از Routing Key باعث مسیریابی دقیق و جلوگیری از ارسال پیام به صف‌های غیر مرتبط می‌شود.

جمع‌بندی

Routing Key ابزار اصلی هدایت پیام‌ها در RabbitMQ است. با ترکیب آن با انواع Exchange و Bindingها، می‌توان سیستم‌های پیام‌رسانی دقیق، مقیاس‌پذیر و انعطاف‌پذیر طراحی کرد که پیام‌ها فقط به صف‌های مورد نظر برسند.

ثبت دیدگاه


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

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


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