Laravel의 대기열 시스템은 다음과 같은 방식으로 작업 재시도 및 실패를 처리합니다.
작업 회복
1. 구성 가능한 검색 : 임시 오류로 인해 실패하면 작업을 재조정하여 시스템 안정성을 향상시킬 수 있습니다. 이것은 직업 클래스 [2] [3]에서`tries '속성을 설정함으로써 이루어집니다.
2. 자동 회수 : Laravel은 실패한 작업에 대한 자동 회수를 제공합니다. 작업이 실패하면 실패한 것으로 표시되기 전에 지정된 횟수로 retsed [2] [3].
3. Job Retry Logic : 작업 클래스에서 '실패한'방법을 정의하여 작업 실패를 처리 할 수 있습니다. 이 방법은 작업이 실패 할 때 호출되며 작업 별 행동을 수행 할 수 있습니다 [3].
작업 실패
1. 실패한 작업 테이블 : Laravel Stores는`jourd_jobs '데이터베이스 테이블에서 실패한 작업을 저장합니다. 이 표에는 작업 ID, 연결, 대기열 및 고장 시간에 대한 정보가 포함되어 있습니다 [3].
2. 실패한 작업보기 : '큐 : 실패'장인 명령을 사용하여 실패한 작업을 모두 볼 수 있습니다. 이 명령에는 작업 ID, 연결, 큐 및 실패 시간이 나와 있습니다 [3].
3. 실패한 작업 재 시도 :`큐 : retry` 장인 명령을 사용하여 실패한 작업을 재 시도 할 수 있습니다. 이 명령은 구인 ID를 인수로 받아들이고 작업을 다시 시작합니다. `큐 : retry all` [3] [5]를 사용하여 모든 실패한 작업을 다시 시도 할 수 있습니다.
4. 실패한 작업 삭제 :`Queue : Forget` artisan 명령을 사용하여 실패한 작업을 삭제할 수 있습니다. 이 명령은 구인 ID를 인수로 받아들이고 작업을 삭제합니다. `Queue : Flush` [3]을 사용하여 실패한 작업을 모두 삭제할 수도 있습니다.
결론
Laravel의 대기열 시스템은 작업 회복 및 실패를 처리하기위한 강력한 메커니즘을 제공합니다. 검색을 구성하고, 실패한 작업을보고, 실패한 작업을 다시 시도하고, 실패한 작업을 삭제함으로써 배경 처리 작업의 신뢰성과 효율성을 보장 할 수 있습니다.
인용 :[1] https://laracasts.com/discuss/channels/laravel/laravel-queue-retrety-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-retrety-fter-x-minutes-failed
[5] https://stackoverflow.com/questions/30778924/laravel-4-retry-all-failed-jobs