ก่อนอื่นต้องนิยามว่า “มีเพียง node เดียวรัน cronjob” หมายถึงอะไร การป้องกันการทำงานพร้อมกันกับการป้องกันผลทางธุรกิจซ้ำเป็นคนละข้อกำหนด Scheduler ร่วมช่วยประสานการทำงาน แต่ตัวงานต้องปลอดภัยแม้ crash แล้ว retry
ลองพิจารณางานออกใบแจ้งหนี้รายวันที่ deploy บน NestJS สาม node เราต้องการให้งานตามเวลาทำงาน โดยไม่สร้างใบแจ้งหนี้อีกใบเมื่อ worker เริ่มใหม่
1. เข้าใจว่าทำไมทุก node เริ่มงาน
แต่ละ instance ของแอปพลิเคชันลงทะเบียน cron callback ของตัวเอง เมื่อถึงเวลา ทุก instance จึงเริ่มได้อย่างอิสระ:
