Pub/Sub ลำดับข้อความเพี้ยน เพราะลืมเปิด Message Ordering
ก่อนหน้านี้เราใช้ Kafka เป็นหลัก ก็เลยชินกับการที่ข้อความในแต่ละ partition จะเรียงลำดับ พอเริ่มใช้ Google Cloud Pub/Sub จริงจังครั้งแรก ก็คิดว่า “มันก็น่าจะคล้าย ๆ กันแหละ…” แต่ความจริงคือ Pub/Sub ไม่จัดลำดับข้อความให้โดยอัตโนมัติ และเราก็เพิ่งรู้ตอนที่เจอปัญหาแล้ว 😅 ปัญหาที่เจอ อยู่ดี ๆ service ฝั่ง consumer เริ่มประมวลผลข้อความสลับลำดับ ทั้งที่ฝั่ง publisher ส่งมาเรียงตามลำดับที่ต้องการ เช่น: message 1 message 2 แต่กลับกลายเป็นว่า message 2 มาถึงก่อน message 1 ซะอีก ลองเช็กดูถึงรู้ว่า… Pub/Sub จะไม่เรียงลำดับข้อความ หากเราไม่ได้เปิด “Message Ordering” ตอนสร้าง subscription และที่สำคัญคือ ถ้าไม่ได้เปิดไว้ตั้งแต่แรก จะมาเปิดทีหลังไม่ได้ วิธีที่เราแก้ เราต้องลบ subscription เดิม แล้วสร้างใหม่ โดยเปิดตัวเลือก Enable message ordering ผ่าน Command Line: gcloud pubsub subscriptions create my-subscription \ --topic=my-topic \ --enable-message-ordering ผ่าน Google Cloud Console: ...