2017-03-20 4 views
1

프로젝트에서 Beanstalkd를 작업 대기열로 사용하고 있습니다.Laravel + Beanstalkd : "queue : listen"을 서비스로 실행하는 방법

이제 프로젝트가 완료되었으며 VPS (프로덕션 서버)에 배포해야합니다.

저를 혼란스럽게하는 뭔가가 있습니다! 내가 프로덕션 서버로 ssh하고 php artisan queue:listen을 수동으로 입력해야합니까? (쓰레기)

서비스로 queue:listen을 실행할 서버가 있습니까?

답변

7

생산에서 대기열을 실행하려면 Supervisor과 같은 것을 사용해야합니다. 이렇게하면 백그라운드에서 프로세스를 실행하고 대기중인 작업을 처리 할 작업자 수를 지정하고 프로세스가 실패 할 경우 대기열을 다시 시작할 수 있습니다.

사용하기로 선택한 대기열에 관해서는 귀하에게 달려 있습니다. 과거에는 Beanstalkd를 인스턴스 및 Amazon SQS에 로컬로 설치했습니다. 로컬 인스턴스는 기본 전자 메일 전송 및 기타 비동기 작업에 적합했으며 SQS는 메시지 볼륨이 방대하고 확장해야 할 때 유용했습니다. IronMQ와 같은 다른 SaaS 제품도 있지만, 사람들이 생산에서 문제를 일으키는 일반적인 이유는 감독자를 사용하지 않기 때문입니다.

apt-get과 함께 수퍼바이저를 설치할 수 있습니다. 다음 구성은 시작하기에 좋은 장소입니다 :

[program:laravel-worker] 
process_name=%(program_name)s_%(process_num)02d 
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3 
autostart=true 
autorestart=true 
numprocs=8 
stdout_logfile=/home/user/app.com/worker.log 

이 할 것 다음

  • 자동으로 큐를 시작 php artisan queue:work 명령을 실행 큐 노동자에게
  • 을 고유 한 이름
  • 주세요 작업자가 시스템을 다시 시작하고 대기열을 자동으로 다시 시작합니다. 작업자가 실패 할 경우
  • 8 개 프로세스에서 작업 큐를 실행합니다. 관리자를 시작하려면 /home/user/app.com/worker.log

  • 로그인 모든 출력) 필요에 따라 educed, 당신은 구성을 다시 읽은 후 다음 (/ 다시 시작)를 실행 것 :

    sudo supervisorctl start laravel-worker:* 
    

    documentation Supervisor를 사용하여 Laravel의 대기열 프로세스를 실행하는 방법에 대한 심층적 인 정보를 제공합니다.

  • +0

    위대한 설명. 이 프로젝트는 하루에 5 만개 이상의 메시지를 보냅니다. Beanstalkd는 한번도 사용하지 않았습니다. Amazon SQS를 구매해야합니까? –

    +1

    훌륭한 서비스이고 응용 프로그램에서 대기열을 많이 사용하는 것처럼 들리므로 SQS를 사용하면 돈이 잘 쓰일 수 있습니다. 일을 잘못하게되면 메트릭을 모니터링하는 것이 매우 중요 해집니다! – edcs

    +2

    우리는 Beanstalkd를 하루 3M 이상의 운영체제에서 사용합니다. 오픈 소스이므로 위대한 관리 패널뿐만 아니라 좋은 통계도 있습니다. https://github.com/ptrofimov/beanstalk_console – Pentium10