در RabbitMQ برای اطمینان از پایداری پیامها و جلوگیری از از دست رفتن آنها در صورت ریاستارت سرور، از مفاهیم Durable Queues و Persistent Messages استفاده میکنیم. این مکانیزمها تضمین میکنند که پیامها حتی پس از خاموش شدن یا ریاستارت شدن سرور از بین نروند.
Durable Queues (صفهای پایدار)
برای ساخت یک صف پایدار، باید هنگام تعریف Queue گزینه durable=True
را مشخص کنیم. این کار باعث میشود ساختار صف در صورت ریاستارت سرور حفظ شود.
channel.queue_declare(queue='task_queue', durable=True)
نکته مهم: فقط مشخص کردن صف به عنوان Durable کافی نیست. پیامها نیز باید Persistent باشند تا از بین نروند.
Persistent Messages (پیامهای پایدار)
برای اطمینان از ذخیره پیامها روی دیسک، باید هنگام ارسال پیام از properties=pika.BasicProperties(delivery_mode=2)
استفاده کنیم. این حالت پیام را Persistent میکند.
channel.basic_publish(exchange='',
routing_key='task_queue',
body='پیام مهم',
properties=pika.BasicProperties(
delivery_mode=2, # 2 = Persistent
))
نکات مهم
- Durable Queue تنها ساختار صف را پایدار میکند و برای حفظ پیامها باید آنها را Persistent ارسال کنیم.
- پیامهای Persistent ممکن است کمی کندتر از پیامهای عادی باشند، زیرا روی دیسک ذخیره میشوند.
- ترکیب Durable Queue و Persistent Messages باعث ایجاد سیستم پیامرسانی قابل اعتماد میشود که در برابر خطا و ریاستارت مقاوم است.
جمعبندی
استفاده از Durable Queues و Persistent Messages در RabbitMQ تضمین میکند که پیامها حتی در شرایط بحرانی از بین نروند. این مکانیزم برای طراحی سیستمهای پایدار، مقاوم و قابل اعتماد در پروژههای توزیعشده حیاتی است.