Queue

19 โพสต์ที่ติดแท็กนี้

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. 1สั่ง Job ให้รอ Database Transaction commit ก่อนใน Laravelอ่าน 5 นาที
  2. 2Idempotency คืออะไร และวิธีทำให้ request กับ job ใน Laravel ส่งซ้ำได้โดยไม่เกิดผลซ้ำอ่าน 6 นาที
  3. 3ทำ LINE webhook ใน Laravel ให้ตอบทันที แล้วค่อยประมวลผลใน queueอ่าน 7 นาที
  4. 4วิธีตั้ง retry ใน Laravel ไม่ให้ซ้ำเติมตอน API ปลายทางช้าอ่าน 10 นาที
  5. 5Little's Law คืออะไรอ่าน 4 นาที

บทความแนะนำ

ทุกโพสต์ในแท็กนี้

Laravel 13.39 มีอะไรใหม่ ตั้งเวลาล้าง session ที่หมดอายุ และ model ที่ไม่มี primary key

· อ่าน 4 นาที

วิธีกัน job ที่ทำเสร็จแล้วไปค้างใน failed_jobs เพราะ deadlock

· อ่าน 6 นาที

ตรวจผลชำระเงินจาก gateway ก่อนเชื่อ และอัปเดตคำสั่งซื้อให้รับผลซ้ำได้

· อ่าน 5 นาที

Little's Law คืออะไร

· อ่าน 4 นาที

Idempotency คืออะไร และวิธีทำให้ request กับ job ใน Laravel ส่งซ้ำได้โดยไม่เกิดผลซ้ำ

· อ่าน 6 นาที

วิธีตั้ง retry ใน Laravel ไม่ให้ซ้ำเติมตอน API ปลายทางช้า

· อ่าน 10 นาที

Laravel 13.36 มีอะไรใหม่ Rule:: ครบทุกกฎ validation, DB::olap() และ worker ที่ไม่ติดฐานข้อมูลหลัก

· อ่าน 4 นาที

ระบบเรียกสินค้าและจัดรถ จากรายการค้างส่งใน SAP จนได้เอกสารรับรองคุณภาพ

· อ่าน 4 นาที

ระบบสั่งซื้อของตัวแทนจำหน่าย เชื่อม SAP ทั้งราคา สต๊อก เครดิต และใบสั่งขาย

· อ่าน 5 นาที

ระบบหลังบ้านร้านค้าออนไลน์ คำสั่งซื้อ ชำระเงิน ขนส่ง และแต้มสะสมจากทุกช่องทาง

· อ่าน 3 นาที

ตรวจสอบสลิปโอนเงินผ่าน SlipOK ด้วย Laravel

· อ่าน 7 นาที

ทำ LINE webhook ใน Laravel ให้ตอบทันที แล้วค่อยประมวลผลใน queue

· อ่าน 7 นาที