queue คือที่ที่งานซึ่งไม่ต้องเสร็จก่อนตอบผู้ใช้ไปทำต่อเบื้องหลัง เช่น ส่งอีเมล ตรวจสลิป หรือดึงข้อมูลจากระบบอื่น แท็กนี้รวมทั้งวิธีเขียน job ให้ทนต่อการรันซ้ำและการพังกลางทาง และระบบจริงที่ใช้ queue ส่งข้อมูลระหว่าง Laravel กับระบบภายนอก
ลองเริ่มที่การสั่ง job ให้รอ transaction commit เพราะ worker อาจหยิบ job ไปทำก่อนข้อมูลบันทึกเสร็จ หรือทั้งที่ rollback ไปแล้ว ต่อด้วย Idempotency ที่ทำให้ job รันซ้ำกี่รอบก็ได้ผลเหมือนรอบเดียว แล้วดูของจริงใน LINE webhook ที่ตอบทันทีแล้วค่อยประมวลผลใน queue และตรวจสลิปผ่าน SlipOK ที่ตรวจซ้ำเป็นรอบแต่ตั้งเพดานไว้ ส่วน Laravel Context ส่ง request ID ตามไปถึง job ทำให้ไล่ log จาก request จนถึงงานเบื้องหลังได้ในเส้นเดียว
เมื่อ job ต้องเรียกบริการภายนอก โพสต์เรื่อง retry ตอนปลายทางช้า อธิบายว่า retry ที่ซ้อนกันหลายชั้นส่ง request ไปเพิ่มจนปลายทางฟื้นไม่ได้ และตั้ง deadline กับโควตา retry ไว้แบบไหน ส่วน Little's Law ใช้ประมาณว่าต้องมี queue worker กี่ตัว และอธิบายได้ว่าปลายทางช้านิดเดียวทำให้ worker เต็มได้ยังไง
ฝั่งผลงาน มีระบบที่ดึงเอกสารจาก SAP Business One เป็นรอบแล้วส่งต่อผ่าน queue อย่างระบบส่งใบกำกับภาษีให้ผู้ให้บริการ e-Tax และระบบส่งรายการจ่ายเงินให้ธนาคาร ส่วนของใหม่ในแต่ละรุ่นของ Laravel อย่าง Laravel 13.35 ที่ให้ scheduler ทำงานครั้งเดียวเมื่อมีหลายเครื่อง และ Laravel 13.36 ที่ให้ worker ล้าง sticky connection ระหว่าง job ก็อยู่ในแท็กนี้ด้วย
เริ่มที่นี่
- 1สั่ง Job ให้รอ Database Transaction commit ก่อนใน Laravelอ่าน 5 นาที
- 2Idempotency คืออะไร และวิธีทำให้ request กับ job ใน Laravel ส่งซ้ำได้โดยไม่เกิดผลซ้ำอ่าน 6 นาที
- 3ทำ LINE webhook ใน Laravel ให้ตอบทันที แล้วค่อยประมวลผลใน queueอ่าน 7 นาที
- 4วิธีตั้ง retry ใน Laravel ไม่ให้ซ้ำเติมตอน API ปลายทางช้าอ่าน 10 นาที
- 5Little's Law คืออะไรอ่าน 4 นาที













