ระบบคิวของ Laravel จัดการกับการลองงานใหม่และความล้มเหลวด้วยวิธีต่อไปนี้:
ทดลองงานใหม่
1. การลองอีกครั้งที่กำหนดค่าได้: คุณสามารถกำหนดค่างานที่จะลองใหม่ได้หากงานล้มเหลวเนื่องจากข้อผิดพลาดชั่วคราว ช่วยเพิ่มความน่าเชื่อถือของระบบ ซึ่งทำได้โดยการตั้งค่าคุณสมบัติ `tries` ในคลาสงาน[2] [3]
2. การลองใหม่อัตโนมัติ: Laravel ให้การลองใหม่โดยอัตโนมัติสำหรับงานที่ล้มเหลว หากงานล้มเหลว งานนั้นจะถูกลองซ้ำตามจำนวนครั้งที่ระบุก่อนที่จะถูกทำเครื่องหมายว่าล้มเหลว[2][3]
3. Job Retry Logic: คุณสามารถกำหนดวิธีการ "ล้มเหลว" ในคลาสงานเพื่อจัดการกับความล้มเหลวของงานได้ วิธีการนี้เรียกว่าเมื่องานล้มเหลวและอนุญาตให้คุณดำเนินการเฉพาะงานได้[3]
ความล้มเหลวของงาน
1. ตารางงานที่ล้มเหลว: Laravel เก็บงานที่ล้มเหลวไว้ในตารางฐานข้อมูล `failed_jobs` ตารางนี้ประกอบด้วยข้อมูลเกี่ยวกับรหัสงาน การเชื่อมต่อ คิว และเวลาความล้มเหลว[3]
2. การดูงานที่ล้มเหลว: คุณสามารถดูงานที่ล้มเหลวทั้งหมดได้โดยใช้คำสั่ง `queue:failed` Artisan คำสั่งนี้แสดงรายการ ID งาน การเชื่อมต่อ คิว และเวลาความล้มเหลว[3]
3. ลองงานที่ล้มเหลวอีกครั้ง: คุณสามารถลองงานที่ล้มเหลวอีกครั้งได้โดยใช้คำสั่ง `queue:retry` Artisan คำสั่งนี้รับ ID งานเป็นอาร์กิวเมนต์และลองงานอีกครั้ง คุณยังสามารถลองงานที่ล้มเหลวทั้งหมดอีกครั้งได้โดยใช้ `queue:retry all`[3][5]
4. การลบงานที่ล้มเหลว: คุณสามารถลบงานที่ล้มเหลวได้โดยใช้คำสั่ง `queue:forget` Artisan คำสั่งนี้รับ ID งานเป็นอาร์กิวเมนต์และลบงาน คุณยังสามารถลบงานที่ล้มเหลวทั้งหมดได้โดยใช้ `queue:flush`[3]
บทสรุป
ระบบคิวของ Laravel มอบกลไกที่แข็งแกร่งสำหรับการจัดการการลองงานใหม่และความล้มเหลว ด้วยการกำหนดค่าการลองใหม่ การดูงานที่ล้มเหลว การลองงานที่ล้มเหลวอีกครั้ง และการลบงานที่ล้มเหลว คุณสามารถมั่นใจในความน่าเชื่อถือและประสิทธิภาพของงานการประมวลผลในเบื้องหลังของคุณได้
การอ้างอิง:[1] https://laracasts.com/discuss/channels/laravel/laravel-queue-retry-jobs-5-times
[2] https://wpwebinfotech.com/blog/laravel-queue-system/
[3] https://laravel.com/docs/5.1/queues
[4] https://laracasts.com/discuss/channels/laravel/queue-job-retry-after-x- minutes-if-failed
[5] https://stackoverflow.com/questions/30778924/laravel-4-retry-all-failed-jobs