Laravel

[Laravel] 비동기 Job Queue 실행하기

먹세 2022. 2. 15. 19:07

1. app/Jobs 안에 Job을 생성 후 전달될 파라미터 세팅

php artisan make:job MyJob

app/Jobs/MyJob.php ==

비동기 작업은 ShouldQueue 가 담당한다.

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;

class MyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $data;

    /**
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {

        Log::info('queue test!! : '.$this->data->id);

    }
}

 

 

2. Job을 실행할 곳에서 dispatch 작성

use App\Jobs\MyJob;

MyJob::dispatch($data);

 

3. Job을 수정하면 코스코드가 바로 적용되지 않는다.

수정한 소스코드를 적용시키기 위해서는

php artisan queue:restart

위 명령어를 실행하게되면 worker 서버가 종료된다.

다시 queue가 동작하게 하려면 수동으로 worker 서버를 재실행 시켜주거나,

queue:restart 를 하지않고 그냥 worker 서버만 재시작 해주면 소스코드가 반영된다.

 

혹은 Supervisor와 같은 프로세스매니저를 설치해서 운용하면 된다.

https://laravel.kr/docs/5.4/queues#supervisor-configuration

 

라라벨 5.4 - Queues-큐

라라벨 한글 메뉴얼 5.4 - Queues-큐

laravel.kr

 

 

끝.

 

실행 후 로그 확인.

반응형