ปัญหา: ข้อความใหญ่เกินไป
ระบบมี Service A และ Service B ติดต่อผ่าน Pub/Sub broker เมื่อข้อความใหญ่เกินขีดจำกัดของ Pub/Sub จะส่งไม่สำเร็จ การเพิ่มขีดจำกัดไม่ใช่ทางแก้ไขยาวนาน (scalability issues)
วิธีแก้: แยกข้อความ (Message Splitting)
แบ่งข้อความใหญ่เป็นหลายข้อความเล็ก (เช่น รายการ items → ส่งทีละ item) ผล: 1 publish → หลาย publishes → หลาย processes ระหว่างกัน (concurrent processes)
จัดการกระบวนการสิ้นสุดด้วย Redis
ปัญหา: ระบบไม่รู้ว่า process ทั้งหมดเสร็จแล้วหรือยัง
แก้: ใช้ Redis เป็น counter
- ตั้งค่า initial counter = จำนวน items (หรือจำนวน process ที่แยก)
- แต่ละ process เสร็จ → decrement counter ใน Redis
- เมื่อ counter = 0 → ทุก process เสร็จแล้ว ทำการ mark complete
Redis เหมาะเพราะ: เร็ว (in-memory), รองรับ atomic operations (INCR/DECR), ทนทาน
สรุป
Pattern: Split large message → concurrent processes → Redis counter จัดการ synchronization ไม่ใช่วิธีเดียว (อาจใช้ streaming) แต่แก้ปัญหาข้อความใหญ่ได้ดี