در RabbitMQ، Queueها محل ذخیره پیامها هستند و Exchangeها مسئول مسیریابی پیامها به صفها میباشند. برای هدایت پیامها به صفهای مناسب، باید Queues را تعریف کرده و آنها را به Exchange متصل کنیم.
تعریف Queue
ابتدا باید صف مورد نظر را ایجاد کنیم. اگر صف از قبل وجود نداشته باشد، با استفاده از دستور queue_declare
ایجاد میشود:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# تعریف صف
channel.queue_declare(queue='task_queue', durable=True)
ویژگی durable=True
باعث میشود صف حتی در صورت ریاستارت سرور حفظ شود.
تعریف Exchange و اتصال Queue
پس از ایجاد صف، باید Exchange مناسب را تعریف کرده و Queue را به آن متصل کنیم. این اتصال با استفاده از Binding انجام میشود:
# تعریف Exchange از نوع Direct
channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
# اتصال Queue به Exchange با یک Routing Key
channel.queue_bind(exchange='direct_logs',
queue='task_queue',
routing_key='task_key')
نکات مهم
- هر Queue میتواند به چندین Exchange متصل شود و برعکس.
- Bindingها مشخص میکنند که پیامهای با چه Routing Key به کدام Queue هدایت شوند.
- Queueها میتوانند موقت یا پایدار باشند و این ویژگی روی رفتار آنها در زمان ریاستارت سرور تاثیر میگذارد.
نمونه جریان پیام
Producer ---> Exchange ('direct_logs') ---routing_key='task_key'---> Queue ('task_queue') ---> Consumer
جمعبندی
تعریف Queue و اتصال آن به Exchange با استفاده از Binding و Routing Key اساس مسیریابی پیامها در RabbitMQ است. با تنظیم صحیح این عناصر، پیامها به صفهای مناسب هدایت شده و سیستم پیامرسانی مطمئن و مقیاسپذیر ایجاد میشود.