ویرگول
ورودثبت نام
محمد حسین خداخواه
محمد حسین خداخواهwhat can i say i am just a backend developer
محمد حسین خداخواه
محمد حسین خداخواه
خواندن ۱ دقیقه·۲۱ روز پیش

DLQ(Dead Letter Queue) در کافکا

فرض کن یه مسیج از producer رفته به consumer

به هر دلیلی (که خب الان شاید مهم نباشه ولی بعدا مهمه) پردازش این مسیج توی consumer به مشکل میخوره

خب چی میشه؟؟؟

هیچی دیگه وقتی مسیج توسط consumer شما commit نشه اول صف توی پارتیشن مربوطه میمونه و هی خودشو هل میده توی consumer
consumer هی میگه بابا نمیتونم برو دیگه
ولی کافکا نمیفهمه که تا وقتی این consumer این تسک رو انجام نده ول کن نیست دیگه
نتیجه ی عمل چیه؟؟؟؟
صف مسدود شده و پیام های دیگه پشت بر پشت توی صف منتظرن این یارو کارش راه بیوفته اما دریغ ازینکه راه بیوفته
چرا؟

چون خطا داره
خب نمیشه که بقیه ی تسکارو یه عمر نگه داری؟؟؟
پس بهترین کار این یارو DLQ هست
میگه چی؟

میگه یه قانون retry یا همون pattern retry خودمون رو اجرا کن
بیا تعریف کن اگر این یارو مسیجه سه بار اومد خطا خورد بفرستش تو یه تاپیکی با عنوان consumer-topic.DLQ که حداق بقیه تسکا بین جلو کارشون راه بیوفته
بعد برو سراغ این تسکه فلک زده ببین چه مرگش بوده
این خیلی خوب میشه
اما ما دونوع خطا داریم داریم توی کافکا:
1️⃣ Message-specific Error (خطای مربوط به پیام)
2️⃣ Systemic Error (خطای سیستمی)

توی خطا های مدل اول این الگوی DLQ عالیهههههههههههههههههههههههه اصلا نمونهههههههههههههههه

اما تو خطاهای مدل دوم : نه دیگه این الگو باعث این میشه که پایین میزارم:

  • ❌ پیام ۱ → DLQ

  • ❌ پیام ۲ → DLQ

  • ❌ پیام ۳ → DLQ

  • ❌ …

  • ❌ صدها تراکنش به DLQ میرن 💀

    راه حل این مصیبت چیه؟؟؟؟
    هوم؟؟؟
    circuit breaker pattern

    تو مقاله بعدی درموردش صحبت میکنم

    من حسینم همچنین میتونید منو توی بله هم پیدا کنید

پیامapache kafkakafka
۷
۰
محمد حسین خداخواه
محمد حسین خداخواه
what can i say i am just a backend developer
شاید از این پست‌ها خوشتان بیاید