Laravel & Lumen 시스템의 대기열 서비스

2847 단어
일반적으로 프로그램이 실행되는 작업을 막을 수 있습니다. 우리는 대기열 서비스가 이미 다른 방식으로 호출되어 비저항 서비스를 실현할 수 있습니다.이전에 한 가지 수요는 알리페이를 호출하는 서비스였다. 제3자의 서비스 시간과 성공을 제어할 수 없기 때문에 대기열 비동기 서비스로 처리했는데 기능이 사용할 수 없다는 것을 발견했기 때문에 한 걸음 한 걸음 조사한 후에 이 문제를 해결했다.
  • 우선 대기열의 코드가 정확한지 확인해야 한다. Lumen은 Laravel과 마찬가지로 가상 베이스 Job을 계승하고handle 방법에서 업무 코드를 실현해야 한다.
  • class DeleteBill extends Job
    {
        /**
         * Execute the job.
         *
         * @return void
         */
        public function handle()
        {
            *****
        }
    }
    
  • 호출처에서 대기열 서비스를 호출하는 곳이 정확한지 확인합니다.여기에 주의해야 할 것은 Laravel 문서에서 디스패치 배달 호출을 사용합니다: $this->디스패치 (new Delete Bill ());또 다른 방법은Queue 대상의push 방법을 사용하는 것이다.Queue::push(new Delete Bill()).이 두 가지 방식은 모두 호출에 성공할 수 있으며, 임무를 상응하는 대기열에 넣을 것이다.
  • 다음은 시스템의 대기열 서비스 설정이 정확한지 확인하는 것입니다. config 폴더 아래의queue를 볼 수 있습니다.php 설정.대기열은 일반적으로'sync','database','beanstalkd','sqs','아론','redis'몇 가지를 지원하는데 우리는 자신의 구체적인 설정 방식을 사용자 정의할 수 있다.
  • 'default' => env('QUEUE_DRIVER', 'sync')
    

    이와 같이 env 파일에서 어떤 것을 설정하든지 가능합니다.본인은 Redis 서비스를 사용하고 데이터베이스입니다.php Redis 구성 보기:
    'redis' => [
        'cluster' => env('REDIS_CLUSTER', false),
        'default' => [
            'host'     => env('REDIS_HOST', '121.41.13.126'),
            'port'     => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DATABASE', 0),
            'password' => env('REDIS_PASSWORD', null),
        ],
    ]
    
  • 서버에 대응하는 설정과 서버 Redis 시작 파라미터가 정확한지 확인하려면 명령:ps aux | grep redis-server를 사용하여 서비스의 시작 여부와 대응하는 포트 번호를 볼 수 있습니다.
  • 이것들이 모두 정확합니다. 그리고 Laravel & Lumen에서 대기열 서비스를 시작하고 php artisan queue:work를 사용하여 대기열의 서비스를 소비합니다. 대기열 오류 중복 횟수 설정과 시간 초과 등 강화 기능은 Lartisan 문서를 보고 자세히 해석할 수 있습니다.
  • 마지막으로 Supervisor를 사용하여 대기열을 감시합니다. 이 대기열은 실패할 때queue:listen 또는queue:work 명령을 자동으로 다시 시작합니다. 그러면 언제든지 나누어 주는 임무가 소비될 수 있습니다. 이것은 비교적 편리합니다.다음은 Supervisor 설치 및 구성에 대한 명령입니다.
  • sudo apt-get install supervisor
    
    [program:laravel-worker]
    process_name=%(program_name)s_%(process_num)02dcommand=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3 --daemonautostart=true
    autorestart=true
    user=forge
    numprocs=8
    redirect_stderr=true
    stdout_logfile=/home/forge/app.com/worker.log
    
    sudo supervisord -c /etc/supervisord.confsudo 
    supervisorctl -c /etc/supervisor/supervisord.conf
    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start laravel-worker:*
    

    이번 전체 대기열 서비스의 조사는 전체 대기열 서비스에 대해 깊은 이해를 가지게 했다.이쪽 문장으로 전체 과정을 기록하다.
    여러분은 나의 개인 사이트를 방문할 수 있는 것을 좋아합니다.http://www.yingminxing.com궁금한 점이 있으시면 소통을 환영합니다:QQ:370399195,위챗:yingminxing1988

    좋은 웹페이지 즐겨찾기