Swoole Process 实现多进程消费Jober

Jober 工作界面:

Jober.gif

产生背景:

项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操作,显然会有更好的用户体验。

当然实际情况远不止这一点,我们可以通过Jober的配合完成 “订单超时关闭、自动评论、QQ邮箱定时发送功能等等”。

Jober 是什么

通过Swoole 官方提供Swoole/Process API才得以完成,Jober 相当于每个子进程。如果你开启8个Jober,那么就是8个进程同时消费。

核心特点

  • 命令行:快速实现消息中间件消费、支持守护进程、常驻内存;

  • 自动加载:基于 PSR-4 ,完全使用 Composer 构建;

  • 模块化:支持 Composer ,可以很方便的使用第三方库;

  • 客户端:支持Beanstalk, 理论上来说还支持RabbitMQ并且可以多进程爬虫等等;

  • Jober 特性:

    • 可通过Queue.php配置,指定队列分配不同Jober数量;

    • 可通过配置Crontab, 对每个队列扫描频率控制;

    • 分配的每个Jober,完成5000个任务后自动退出重启;[ 防止内存泄漏 ]

    • 用户停止Jober运行,管理者进程会接收到信号;通知Jober执行完手头任务在退出;

实际案例,我们想要做这样一个功能:

  • QQ邮箱定时发送邮件的功能

完成步骤如下所示:

  • jober 安装

  • jober 邮件类的封装

  • jober 发送邮件的逻辑写在哪呢?

  • jober 队列配置文件


那么开始实现如上步骤:

  1. 安装命令:composer create-project jober/jober [步骤一]
    在这里插入图片描述

  2. composer require swiftmailer/swiftmailerr 安装完成类库,接下来我们封装一下

  3. cd /home/jober/app/utils 创建class文件:MailBox.php [可以发送邮件了] [步骤二]
    在这里插入图片描述
    4.创建 app\Jobs\MailboxJob.php 文件, 实现IJob接口:[步骤三]
    在这里插入图片描述

  4. 业务逻辑已经写好、邮件服务类已装备好。那么我们把这个队列添加到配置文件中吧![步骤四]

    配置文件: app/config/queue.php, 多条队列监控添加多条即可
    在这里插入图片描述

  5. job 就是实现IJob接口的,MailboxJob类文件;那么如何添加呢?
    在这里插入图片描述
    提醒: 一定要写成如图,双斜线:
    在这里插入图片描述

  6. 接下来我们就来启动jober,看下效果: 服务启动成功!!!在这里插入图片描述

  7. 投递定时邮件:
    在这里插入图片描述

  8. 看吧!我们已经惊喜的收到了邮件:
    在这里插入图片描述
    在这里插入图片描述
    到此就结束了:

    1, 想要看完整代码案例,请点开 https://github.com/twomiao/Jober Git 地址。

    2,小伙伴们,记得给我Star哟。Thanks♪(・ω・)ノ

    3,你们的支持就是我的动力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章