Rate Limiting و QoS در Consumer

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

در سیستم‌های پیام‌رسانی، ممکن است تعداد پیام‌های دریافتی از صف بسیار زیاد باشد و Consumer نتواند آن‌ها را با سرعت مناسب پردازش کند. برای کنترل سرعت پردازش پیام‌ها و جلوگیری از Overload، RabbitMQ از مفاهیم Quality of Service (QoS) و Rate Limiting پشتیبانی می‌کند.

Quality of Service (QoS)

با تنظیم QoS می‌توان تعداد پیام‌هایی که Consumer قبل از ارسال تاییدیه (Ack) دریافت می‌کند را محدود کرد. این کار باعث می‌شود مصرف‌کننده پیام‌ها را با سرعت مناسب پردازش کند و از انباشته شدن پیام‌ها جلوگیری شود.

import pika

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

channel.queue_declare(queue='task_queue', durable=True)

# تنظیم QoS: دریافت تنها یک پیام قبل از Ack
channel.basic_qos(prefetch_count=1)

def callback(ch, method, properties, body):
    print(f"پیام دریافت شد: {body.decode()}")
    # پردازش پیام
    ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_consume(queue='task_queue',
                      on_message_callback=callback,
                      auto_ack=False)

print('در انتظار پیام‌ها...')
channel.start_consuming()

Rate Limiting

Rate Limiting به معنی محدود کردن تعداد پیام‌های پردازش شده در یک بازه زمانی مشخص است. در RabbitMQ با ترکیب prefetch_count و تاخیر در پردازش پیام‌ها می‌توان Rate Limiting ساده پیاده‌سازی کرد:

import time

def callback(ch, method, properties, body):
    print(f"پیام دریافت شد: {body.decode()}")
    time.sleep(1)  # پردازش با تاخیر برای کنترل سرعت
    ch.basic_ack(delivery_tag=method.delivery_tag)

مزایا

  • جلوگیری از Overload شدن Consumer و مصرف منابع بیش از حد.
  • افزایش پایداری و کارایی سیستم با مدیریت بهینه سرعت پردازش پیام‌ها.
  • کنترل دقیق‌تر جریان پیام‌ها در سیستم‌های توزیع‌شده و مقیاس‌پذیر.

جمع‌بندی

با استفاده از QoS و Rate Limiting می‌توان سرعت پردازش پیام‌ها توسط Consumer را مدیریت کرد و از ایجاد ترافیک زیاد و فشار روی سیستم جلوگیری نمود. این مفاهیم برای طراحی سیستم‌های پیام‌رسانی پایدار و مقیاس‌پذیر بسیار مهم هستند.

ثبت دیدگاه


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

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


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