"라라벨 큐 이야기"의 두 판 사이의 차이

28번째 줄: 28번째 줄:
* 사용자/관리자는 웹 또는 커맨드를 통해 dispatch를 수행한다.  
* 사용자/관리자는 웹 또는 커맨드를 통해 dispatch를 수행한다.  
* 관리자는 artisan queue:work 명령어로 worker를 기동한다.
* 관리자는 artisan queue:work 명령어로 worker를 기동한다.
* worker의 실행을 보장<ref>죽으면 죽음을 감지하고 다시 켜기</ref>위해 supervisor 데몬을 구동한다.
:단, worker는, 소스코드 상의 결함<ref>예: 잘못된 handle 코드</ref>, 시스템 상의 문제<ref>예: 작업 중 메모리 부족</ref>으로 죽을 수 있음
:worker의 죽음 감지하고 다시 켜기 위해 [[supervisor]]를 설치하여 사용한다.


==같이 보기==
==같이 보기==

2018년 2월 5일 (월) 16:43 판

1 개요

Laravel queues
라라벨 큐
  • 큐 시스템을 위한 통일된 API를 제공함
  • 백엔드로 RDB(예: MariaDB), Beanstalk, Amazone SQS, Redis 등 사용가능
config/queue.php의 connections에 설정[1]
  • 작업들을 큐에 넣고(예약), 순차 시작되도록 하는 용도
작업의 예시: 대량 이메일 발송, 대용량 파일(예: 동영상 파일) 다운로드/업로드/변환
  • 스케줄러는 아님. 수행시작시각 지정은 불가능[2]
언제 시작될지 모르지만 FIFO (단, 우선순위, 지연시간 지정가능)

2 과정

  • 과정을 간단하게 얘기하자면... 작업을 큐에 넣기(dispatch)와 처리하기(work) 2가지 단계 뿐이다.
dispatch(배치) 작업을 큐에 배치함
work(처리) worker가 큐에 있는 작업을 꺼내어 처리함
  • dispatch는 웹상에서 또는 커맨드로 가능
  • work는 worker가 상시적으로 처리함
worker 기동명령어: artisan queue:work
  • 실패한 job을 failed_jobs 테이블에 보존할 수 있음
  • job 실패시 재시도하도록 할 수 있음. 기본값=0(회) = 재시도 안함
  • 타임아웃 시간을 지정할 수 있음. 기본값=60(초)

3 요약 재설명

  • 1) 작업을 큐에 배치(dispatch)하는 단계와, 2) worker가 큐에 있는 작업을 처리(work)하는 단계가 있다.
  • 사용자/관리자는 웹 또는 커맨드를 통해 dispatch를 수행한다.
  • 관리자는 artisan queue:work 명령어로 worker를 기동한다.
단, worker는, 소스코드 상의 결함[3], 시스템 상의 문제[4]으로 죽을 수 있음
worker의 죽음 감지하고 다시 켜기 위해 supervisor를 설치하여 사용한다.

4 같이 보기

5 참고

(영어) https://laravel.com/docs/5.5/queues
  1. 1개 이상의 큐를 가질 수 있음. 특별히 명시하지 않으면 기본 큐 1개를 사용함
  2. 직접 구현하거나 외부스케줄러를 사용하면 가능하겠지만, 기본적으로는 불가.
  3. 예: 잘못된 handle 코드
  4. 예: 작업 중 메모리 부족
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}