当前位置:   article > 正文

fastadmin think-queue supervisor配置_fastadmin 配置队列

fastadmin 配置队列

起因是微信支付回调需要同时做发货处理,但是发货接口不能影响,需要队列进行异步处理1.

1.fastadmin  后台购买queue插件(基于think-queue消息队列)

2.代码

        2.1 添加文件:application---->extra--->queue.php

        内容:我这里用的数据库做的驱动类型,这里不建议用数据库,我这条件有限

  1. <?php
  2. return [
  3. 'connector'=>'database', //驱动类型,可选择 sync(默认):同步执行,database:数据库驱动,redis:Redis驱动,topthink:Topthink驱动
  4. //database
  5. 'expire' => 60,
  6. 'default' => '',
  7. 'table' => 'faqueue_jobs', //插件下载的表
  8. 'dsn' => [
  9. 'type' => 'mysql',
  10. 'database' => '',
  11. 'hostname' => '127.0.0.1',
  12. 'username' => '',
  13. 'password' => '',
  14. 'prefix' => '',
  15. ]
  16. ];

        2.2新建job文件:application---->job--->job1.php

        内容:

  1. <?php
  2. namespace app\job;
  3. use addons\faqueue\library\QueueApi;
  4. use think\Db;
  5. use think\Log;
  6. use think\queue\Job;
  7. class Job1{
  8. public function fire(Job $job, $data){
  9. //....这里执行具体的任务
  10. //自动发货
  11. log::write(["msg"=>"发货开始"],"log");
  12. self::sendGoods($data['out_trade_no'],$data['transaction_id'],$data['openid']);
  13. log::write(["msg"=>"发货结束"],"log");
  14. if ($job->attempts() > 3) {
  15. //通过这个方法可以检查这个任务已经重试了几次了
  16. log::write(["msg"=>"任务已经超过三次"],"log");
  17. }
  18. //如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
  19. $job->delete();
  20. return true; //这里一定要返回 不然会不断请求
  21. // 也可以重新发布这个任务
  22. // $job->release($delay); //$delay为延迟时间
  23. }
  24. public function failed($data){
  25. log::write(["msg"=>"失败原因","data"=>$data],"log");
  26. // ...任务达到最大重试次数后,失败了
  27. }
  28. }

         2.3在需要异步处理的地方:

        

QueueApi::later(10,'app\job\job1',$delaydata);//QueueApi是插件,直接引入就行

        2.4这里开启queue后,日志文件一直在增大。解决方案是config文件里配置debug和log为level---->error。这样线上就不会产生日志了

  1. // 应用调试模式
  2. 'app_debug' => Env::get('app.debug', false),
  3. 'log' => [
  4. // 日志记录方式,内置 file socket 支持扩展
  5. 'type' => 'File',
  6. // 日志保存目录
  7. 'path' => LOG_PATH,
  8. // 日志记录级别
  9. 'level' => ['error'],
  10. ],

3.光有队列不行,需要跟进程管理器supervisor配合。

        3.1 安装supervisor------centos7系统

  1. #yum 安装 supervisor
  2. yum install -y supervisor
  3. #生成配置文件 配置文件生成位置为/etc/supervisord.conf

        3.3 配置supervisor.conf

  1. vi /etc/supservisord.conf
  2. 在supservisord.conf文件最后加入如下配置
  3. files = /etc/supervisord.d/*.conf
  4. #这里用到了var/log 和var/run/supervisor
  5. chmod -R 777 /var/log
  6. chmod -R 777 /var/run/supervisor

        3.4 项目配置,多个项目就配置多个子文件

  1. vi /etc/supervisord.d/chaowanmh.conf
  2. 配置内容如下:
  3. [program:yuanqimohe-worker]
  4. process_name=yuanqimohe #生成进程名称
  5. command=php /www/wwwroot/yuanqimohe.hc8610.top/think queue:work --daemon #命令执行
  6. autostart=true #自动启动,随着supervisor启动而启动
  7. autorestart=true #假如挂掉自动重启
  8. ;user=admin  #以哪个用户执行
  9. numprocs=8 # 将指示监控器运行 8 个 queue:work 进程并监视所有进程,如果它们失败,将自动重新启动它们
  10. redirect_stderr=true #设置代码报错结果的输出文件,排错好助手
  11. stdout_logfile=/var/log/supervisor/think-queue.log #设置代码打印结果输出文件
  12. 注意:上述有注释 是看每个配置有啥用的 实际配置不要加注释 如下:
  13. [program:chaowanmh-worker]
  14. process_name=%(program_name)s_%(process_num)02d
  15. command=php /www/wwwroot/chaowanmh.hc8610.top/think queue:work --daemon
  16. autostart=true
  17. autorestart=true
  18. user=root
  19. numprocs=8
  20. redirect_stderr=true
  21. stdout_logfile=/var/log/supervisor/think-queue.log

        3.5启动

  1. #启动supservisor
  2. supervisord -c /etc/supervisord.conf
  3. #查看状态
  4. supervisorctl status

        3.6 创建了配置文件后,你可以使用以下命令更新 Supervisor 配置并启动进程:

  1. sudo supervisorctl reread
  2. sudo supervisorctl update
  3. sudo supervisorctl start chaowanhm-worker:* //这是/etc/supervisord.d/chaowanmh.conf里配置progrom,如果有多个队列,就启动多个

        3.7 排查

  1. 1.查看进程(红框内是进程,作为小白的我,以为下边那个是进程,一直杀不死,也是绝了)
  2. ps aux|grep supervisor
  3. 2.杀死进程
  4. kill 进程id
  5. 3.重启
  6. supervisord -c /etc/supervisord.conf
  7. 4.查看状态
  8. supervisorctl status
  9. 5.重启进程
  10. sudo supervisorctl start chaowanmh-worker:*
  11. 6.如果修改了配置,加载更新配置
  12. sudo supervisorctl reread
  13. sudo supervisorctl update

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/132144
推荐阅读
相关标签
  

闽ICP备14008679号