Laravel 큐

Jmnote (토론 | 기여)님의 2024년 5월 20일 (월) 01:28 판 (→‎Job 이벤트)

1 개요

라라벨 Queues
Laravel 큐

2 소개

웹 애플리케이션을 구축하는 동안, CSV 파일을 파싱하고 저장하는 것과 같이 일반적인 웹 요청 동안 처리하기에는 시간이 너무 오래 걸리는 작업이 있을 수 있습니다. 다행히도, Laravel을 사용하면 이러한 작업을 백그라운드에서 처리할 수 있는 큐된 작업을 쉽게 만들 수 있습니다. 시간이 많이 소요되는 작업을 큐로 옮김으로써 애플리케이션이 웹 요청에 신속하게 응답하고 사용자에게 더 나은 경험을 제공할 수 있습니다.

Laravel 큐는 Amazon SQS, Redis, 또는 관계형 데이터베이스와 같은 다양한 큐 백엔드에서 통합된 큐 API를 제공합니다.

Laravel의 큐 설정 옵션은 애플리케이션의 config/queue.php 설정 파일에 저장됩니다. 이 파일에서 데이터베이스, Amazon SQS, Redis, Beanstalkd 드라이버를 포함하여 프레임워크에 포함된 각 큐 드라이버에 대한 연결 설정을 찾을 수 있습니다. 또한, 즉시 작업을 실행하는 동기 드라이버(로컬 개발 시 사용)와 큐에 추가된 작업을 폐기하는 null 큐 드라이버도 포함되어 있습니다.

이제 Laravel은 Redis 기반 큐를 위한 아름다운 대시보드 및 구성 시스템인 Horizon을 제공합니다. 자세한 내용은 전체 Horizon 문서를 참조하십시오.

2.1 연결 vs 큐

2.2 드라이버 노트와 전제조건

3 Job 생성

3.1 Job 클래스 생성

3.2 클래스 구조

3.3 유니크 Job

3.4 암호화된 Job

4 Job 미들웨어

4.1 레이트 리미팅

4.2 Job 겹침 방지

4.3 예외 쓰로틀링

5 Job 디스패치

5.1 지연된 디스패치

5.2 동기식 디스패치

5.3 Jobs & 데이터베이스 트랜잭션

5.4 Job 체인

5.5 큐 및 연결 커스터마이징

Specifying Max Job Attempts / Timeout Values Error Handling

6 Job 배치

6.1 배치가능 Job 정의

6.2 배치 디스패치

6.3 체인과 배치

6.4 배치에 Job 추가

6.5 배치 조사

6.6 배치 취소=

6.7 배치 실패=

6.8 배치 솎아내기

6.9 배치를 DynamoDB에 저장하기

7 큐잉 클로저

8 큐 워커 구동

===The queue:work Command ===Queue Priorities ===Queue Workers and Deployment ===Job Expirations and Timeouts

9 Supervisor 설정

10 실패한 Job 다루기

10.1 실패한 Job 후 클린업

10.2 실패한 Job 재시도

10.3 누락된 모델 무시하기

10.4 실패한 Job 솎아내기

10.5 실패한 Job을 DynamoDB에 저장하기

10.6 실패한 Job 스토리지 비활성화하기

10.7 실패한 Job 이벤트

11 큐에서 Job 클리어=

12 큐 모니터링

13 테스트

13.1 Job의 부분집합 페이크

13.2 Job 체인 테스트

13.3 Job 배치 테스트

13.4 Job / 큐 상호작용 테스트

14 Job 이벤트

Queue 퍼사드beforeafter 메소드를 사용하여 큐에 등록된 작업이 처리되기 전이나 후에 실행할 콜백을 지정할 수 있습니다. 이러한 콜백은 추가 로깅을 수행하거나 대시보드를 위한 통계를 증가시키는 좋은 기회입니다. 일반적으로 이러한 메소드는 서비스 제공자boot 메소드에서 호출해야 합니다. 예를 들어, Laravel에 포함된 AppServiceProvider를 사용할 수 있습니다:

<?php
 
namespace App\Providers;
 
use Illuminate\Support\Facades\Queue;
use Illuminate\Support\ServiceProvider;
use Illuminate\Queue\Events\JobProcessed;
use Illuminate\Queue\Events\JobProcessing;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * 애플리케이션 서비스 등록.
     */
    public function register(): void
    {
        // ...
    }
 
    /**
     * 애플리케이션 서비스 부트스트랩.
     */
    public function boot(): void
    {
        Queue::before(function (JobProcessing $event) {
            // $event->connectionName
            // $event->job
            // $event->job->payload()
        });
 
        Queue::after(function (JobProcessed $event) {
            // $event->connectionName
            // $event->job
            // $event->job->payload()
        });
    }
}

15 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}