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

7번째 줄: 7번째 줄:
* 작업들을 큐에 넣고(예약), 순차 시작되도록 하는 용도
* 작업들을 큐에 넣고(예약), 순차 시작되도록 하는 용도
:작업의 예시: 대량 이메일 발송, 대용량 파일(예: 동영상 파일) 다운로드/업로드/변환
:작업의 예시: 대량 이메일 발송, 대용량 파일(예: 동영상 파일) 다운로드/업로드/변환
* 스케줄러는 아님. 수행시작시각 지정은 불가능<ref>직접 구현하거나 외부스케줄러를 사용하면 가능하겠지만, 기본적으로는 불가.</ref>
* 수행시작시각 지정은 불가
:언제 시작될지 모르지만 FIFO (단, 우선순위, 지연시간 지정가능)
:"큐"이므로 언제 시작될지 모르지만 FIFO (단, 우선순위, 지연시간 지정가능)
:시작시각을 지정하려면 "큐" 대신 "[[라라벨 작업 스케줄링]]" 이용


==과정==
==과정==
34번째 줄: 35번째 줄:
* [[라라벨 config/queue.php]]
* [[라라벨 config/queue.php]]
* [[Laravel Horizon]]
* [[Laravel Horizon]]
* [[라라벨 작업 스케줄링]]
* [[라라벨]]
* [[라라벨]]
* [[메시지 큐]]
* [[메시지 큐]]

2018년 2월 6일 (화) 02:26 판

1 개요

Laravel queues
라라벨 큐
  • 큐 시스템을 위한 통일된 API를 제공함
  • 백엔드로 RDB(예: MariaDB), Beanstalk, Amazone SQS, Redis 등 사용가능
config/queue.php의 connections에 설정[1]
  • 작업들을 큐에 넣고(예약), 순차 시작되도록 하는 용도
작업의 예시: 대량 이메일 발송, 대용량 파일(예: 동영상 파일) 다운로드/업로드/변환
  • 수행시작시각 지정은 불가
"큐"이므로 언제 시작될지 모르지만 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는, 소스코드 상의 결함[2], 시스템 상의 문제[3]으로 죽을 수 있음
worker의 죽음을 감지하고 다시 켜도록 하기 위해 supervisor를 설치하여 사용한다.

4 같이 보기

5 참고

(영어) https://laravel.com/docs/5.5/queues
  1. 1개 이상의 큐를 가질 수 있음. 특별히 명시하지 않으면 기본 큐 1개를 사용함
  2. 예: 잘못된 handle 코드
  3. 예: 작업 중 메모리 부족
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}