إذا أدى مستهلك Kafka إلى تأثير جانبي، افترض أن التكرارات ممكنة حتى تثبت العكس.
هذا هو الافتراض الأكثر أمانًا.
لدى Kafka ميزات (exactly-once)، ولكن كثيرًا ما يبالغ المهندسون في تفسير ما تغطيه تلك الضمانات. إنها تساعد كثيرًا داخل نموذج معالجة Kafka الخاص به. لكنها لا تجعل كل كتابة لقاعدة بيانات تالية أو اتصال API خارجي خاليًا من التكرارات بشكل سحري.
مشكلة المستهلك
تبدو النمط المحفوف بالمخاطر على الشكل التالي:
استهلاك الرسالة
تحديث قاعدة البيانات
تأكيد التقدم
إذا تعطلت الخدمة بين الخطوتين، قد يحدث إعادة تشغيل.
هذا لا يعني أن هناك خللًا في Kafka. إنما هو سلوك طبيعي في الأنظمة الموزعة تحت الفشل.
استخدم مفتاح إيديمبوسية
كل حدث يمكن أن يؤدي إلى تأثير جانبي يجب أن يحمل معرفًا ثابتًا: