Laravel의 재정렬 방법은 주로 대기열 작업에 사용하여 포기하기 전에 작업을 계속하는 시간을 통제하기 위해 주로 사용됩니다. 시간 초과 시간을 지정하고, 그 후에 구직 요원은 시도한 시도에 관계없이 해당 작업을 재 처리하려는 시도를 중단합니다. 이 메소드는 데이터를 재 시도하기위한 절대 컷오프 시간을 나타내는 DateTime 인스턴스를 반환합니다.
Laravel의 재정비 방법에 대한 일반적인 사용 사례는 다음과 같습니다.
조절 및 요율 제한 작업 :
- 비율 제한 (예 : 최대 10 개의 요청)을 시행하는 외부 API와 상호 작용할 때 특정 마감일까지 작업을 반복적으로 재개 할 수 있습니다. Retryuntil을 사용하면 최대 재시도 기간 (예 : 1 시간 또는 24 시간)을 시행하여 큐가 범람 할 수있는 무기한 재시도 루프를 방지합니다.
-이 접근법은 타사 서비스에 의해 부과 된 일시적인 요율 제한 또는 조절기로 인해 작업이 실패 할 때 유용하며 여러 번 재조정되어야하지만 영원하지는 않습니다.
카운트 기반 대신 시간 기반 시도 :
-RetRyuntil은 $ 시도 속성의 대안으로 사용될 수 있으며, 이는 작업에 대한 최대 재 시도 수를 정의합니다.
- 레트리 시도를 숫자로 제한하는 대신 시간이 지남에 따라 재정의를 제한합니다. 직무는 지정된 시간 제한까지 가능한 여러 번 다시 시도합니다.
- 이것은 얼마나 많은 시도가 필요한지 추정하기 어려울 때, 시간 제약이 정확한 재 시도 수보다 더 중요한시기를 추정하기 어려울 때 도움이 될 수 있습니다.
고 실패 확률 작업 처리 :
-HTTP 요청을 불안정한 타사 API로 전송하는 것과 같은 작업의 경우 산발적으로 실패 할 수있는 RetRyuntil을 사용하면 작업이 계속 노력할 수 있지만 현명한 시간 초과 창 내에서만 작업을 계속할 수 있습니다.
- 이것은 일자리가 너무 빨리 포기 될 위험이 줄어들면서 자원을 영원히 낭비하지 않도록합니다.
타임 아웃으로 우아한 열화 :
- 일자리가 긴 작업이나 시간 초과 또는 일시적으로 속도가 느려질 수있는 긴 작업 또는 다운 스트림 종속성이 포함 된 경우, Retryuntil 설정 개발자는 작업을 재 시도하는 글로벌 타임 아웃 경계를 설정할 수 있습니다.
- 이렇게하면 대기열이 움직이고 일자리가 고착되거나 느리게 자원을 막지 못하게합니다.
Retryuntil과 Job Middleware 결합 :
-RetRyuntil은 작업 대기열 처리 속도를 제어하는 속도 제한 또는 스로틀 링 미들웨어와 같은 작업 미들웨어와 결합 할 때 유용합니다.
예를 들어, 특정 처리량으로 제한된 수천 개의 작업을 제출할 때 RetRyuntil은 작업의 수명을 설정할 수 있습니다. 작업이 반복적으로 조절되고 재확인되면 결국 재시험 시간 경과 후 재 시도를 중단하여 무한 재 시도 사이클을 피할 수 있습니다.
-이 패턴은 진정한 실패와 요율 제한으로 인해 단순히 지연되는 작업을 구별하는 데 도움이됩니다.
사용자 정의 재 시도 로직 :
- 개발자는 때때로 Retryuntil을 사용하여 맞춤형 재 시도 전략을 구현합니다. 예를 들어, 메소드 내부에 논리를 추가하여 시스템 부하 또는 API 상태와 같은 외부 조건을 기반으로 재시도 시간을 동적으로 확장하거나 줄일 수 있습니다.
- 이는 고정 수의 회수 또는 고정 된 시간 초과를 넘어 재 시도 메커니즘에 유연성을 추가합니다.
실패와 회수를 구별하기 :
-RetRyuntil은 계속 실패하지만 재 시도 창 안에있는 작업의 지나치게 공격적인 검색을 방지하여 오류 로그를 정리하는 데 도움이 될 수 있습니다.
- 개발자는 구직 방법 내부에서 시도/캐치를 구현할 수 있으며 재시험 타임 아웃 이전에 회복 불가능한 예외가 발생하면 작업을 명시 적으로 실패시킬 수 있습니다.
- 이로 인해 실패한 작업이 즉시 중단되는 동안 타임 아웃까지 재활용 작업이 계속되면 실패 상태가 명확 해집니다.
요금 제한 작업 시간 초과 :
- 속도 제한 통화로 인해 대기열에 다시 공개되는 작업은 시도 카운트가 증가하므로 RetRyuntil은 실패 안전 타이머 역할을 할 수 있습니다.
- 요금 제한된 일자리가 계속 석방되고 재조정되면, RetRyuntil은 정해진 시간 초과 기간을 넘어 재 시도하지 않도록 보장합니다.
실제 예 :
- 5 분마다 다시 시작하지만 1 시간 후에는 재 시도를 중단하는 이메일 보내는 작업.
- 외부 결제 게이트웨이가 오류 또는 타임 아웃에 응답하는 경우 최대 30 분 동안 계속 재 시도하는 결제 처리 작업.
-API 요율 제한 및 임시 다운 타임에 대한 24 시간 동안 재 시도하는 API 통합 작업.
Laravel의 대기열 문서는 작업을 재조정 해야하는 최대 시간을 지정하는 방법으로 RetRyuntil을 강조합니다. 둘 다 존재하면 $ 시도 속성을 무시합니다. 개발자는 Laravel이 더 이상 작업을 시도하지 않는 미래의 타임 스탬프를 반환하도록 RetRyuntil을 설정했습니다.
유틸리티에도 불구하고 일부 개발자는 작업 체인 시나리오에서 무시되거나 재 시도 조건이 충족되지 않으면 대기열에서 예상치 못한 일자리가 사라지는 것과 같은 재시험 행동의 한계를 기록합니다. 또한 retryuntil 메소드는 작업의 핸들 메소드 또는 추가 미들웨어에 의해 처리되어야하는 예외를 획득하거나 예외를 포착하는 것과 같은 논리를 직접 처리하지 않습니다.
요약하면, Retryuntil은 Laravel의 시도 수보다는 시간을 기준으로 대기열 작업 재 시도 수명을 제어하기위한 강력한 방법입니다. 일반적으로 요금 제한 API와 상호 작용하는 작업, 고장 확률이 높은 운영 및 우아한 재 시도 시간 초과를 시행하여 Laravel의 대기열 처리 시스템의 견고성과 제어를 개선하는 데 일반적으로 사용됩니다.