یکی از ویژگیهای مهم Kafka، قابلیت Consumer Group است که اجازه میدهد بار پردازش پیامها بین چند Consumer تقسیم شود. این ویژگی برای مقیاسپذیری و افزایش کارایی سیستم بسیار مفید است.
۱. مفهوم Consumer Group
هر Consumer که عضو یک گروه باشد، پیامها را از Partitionهای Topic اختصاصی خود دریافت میکند. Kafka تضمین میکند که هر Partition تنها توسط یک Consumer در گروه مصرف شود. به این ترتیب، چند Consumer میتوانند به صورت موازی پیامها را پردازش کنند.
۲. مثال Consumer با گروه
from kafka import KafkaConsumer
consumer = KafkaConsumer(
'my-topic',
bootstrap_servers='localhost:9092',
auto_offset_reset='earliest',
enable_auto_commit=True,
group_id='my-group', # نام گروه مصرفکننده
value_deserializer=lambda v: v.decode('utf-8')
)
print("در حال دریافت پیامها با Consumer Group 'my-group'...")
for message in consumer:
print(f"Partition: {message.partition}, پیام: {message.value}")
۳. مزایای استفاده از Consumer Group
- تقسیم بار پردازش بین چند Consumer.
- مقیاسپذیری ساده با اضافه کردن Consumer جدید به گروه.
- افزایش تحمل خطا: اگر یک Consumer قطع شود، سایر اعضای گروه Partitionهای آن را مصرف میکنند.
- حفظ Ordering در هر Partition: هر Partition تنها توسط یک Consumer در گروه پردازش میشود.