Redis Queue in Laravel: 대기열 처리

에서 는 Laravel 완료 Redis Queue 를 기다리지 않고 오래 실행되고 시간이 많이 걸리는 작업을 처리하는 데 사용되는 강력한 도구입니다. 를 사용하여 Redis Queue 이메일 보내기, 백그라운드 작업 처리 또는 보고서 생성과 같은 작업을 대기열에 추가하고 비동기식으로 실행하여 애플리케이션 성능을 개선하고 사용자 경험을 향상할 수 있습니다.

Redis Queue 에서 사용할 기본 단계 Laravel

구성 Redis

Redis 먼저 에서 설치 및 구성해야 합니다 Laravel. Redis Composer를 통해 패키지를 설치하고 파일 Redis 에서 연결 매개변수를 구성했는지 확인하십시오 .env.

CACHE_DRIVER=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

작업 정의

다음으로 대기열에 넣을 작업을 정의해야 합니다. 이러한 작업은 애플리케이션의 기본 처리와 독립적으로 비동기식으로 수행됩니다.

// Example defining a job to send an email  
namespace App\Jobs;  
  
use Illuminate\Bus\Queueable;  
use Illuminate\Contracts\Queue\ShouldQueue;  
use Illuminate\Foundation\Bus\Dispatchable;  
use Illuminate\Queue\InteractsWithQueue;  
use Illuminate\Queue\SerializesModels;  
use Illuminate\Support\Facades\Mail;  
  
class SendEmailJob implements ShouldQueue  
{  
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;  
  
    protected $user;  
  
    public function __construct($user)  
    {  
        $this->user = $user;  
    }  
  
    public function handle()  
    {  
        // Handle sending an email to the user  
        Mail::to($this->user->email)->send(new WelcomeEmail());  
    }  
}  

대기열에 작업 넣기

작업을 수행하려면 다음과 같이 dispatch 또는 dispatchNow 함수를 사용하여 작업을 대기열에 넣기만 하면 됩니다.

use App\Jobs\SendEmailJob;  
use Illuminate\Support\Facades\Queue;  
  
// Put the job into the queue and perform asynchronously  
Queue::push(new SendEmailJob($user));  
  
// Put the job into the queue and perform synchronously(without waiting)  
Queue::push(new SendEmailJob($user))->dispatchNow();  

대기열에서 작업 처리

작업을 대기열에 넣은 후 Worker 대기열에 있는 작업을 실행하도록 설정해야 합니다. 다음을 실행하는 Laravel 와 함께 제공됩니다. artisan command worker

php artisan queue:work

는 worker 대기열의 작업을 지속적으로 수신하고 실행합니다. worker 작업 수와 처리 라운드 사이의 대기 시간을 처리하도록 를 구성할 수 있습니다 .

대기열에서 작업 관리

Laravel 대기열의 작업을 모니터링하고 제어할 수 있는 관리 인터페이스를 제공합니다. 보류 중인 작업 수, 처리 시간을 볼 수 있으며 실패한 작업을 다시 시도할 수도 있습니다.

 

결론 Redis Queue in을 사용하는 Laravel 것은 애플리케이션의 주요 처리를 중단하지 않고 장기 실행 작업을 처리하는 효율적인 방법입니다. 를 사용하여 Redis Queue 애플리케이션 성능을 개선하고 사용자 경험을 향상시킬 수 있습니다.