SWOOLE 多进程消息系统

场景:适用于大部分消息队列场景,我列举几个常见地方:订单自动取消并归还库存,自动收货,群发邮件,推送微信消息模板,异步邮件发送,会员到期自动取消. . . . . 等等

一、我们开始看下这个消息端系统的实现流程。

  1. 然后把业务逻辑写在Job类,分别两个方法 [ doJob => 自定义业务, after=> 业务后续操作]

     

二、Serve-Queue 详细讲解流程:

  1. 安装 git clone https://github.com/twomiao/Serve.git , 然后执行命令:Composer install
  2. cd Serve/app/ 打开目录,效果图

      

    3. 目录介绍: Config、Services、Utils、Job、Func 

     1). Config 配置文件目录 (Redis, MySQL, Serve-Queue)

     2). Services 业务分层 ( OrderService)

     3). Utils 工具类 (邮件,短信等等), Helper 等同

     4). Job 目录 (Job::doJob() 业务编写在里面,不要更改Job类名称)

     5). Func 常用函数 ( env, db为例)

     6). log 日志目录以及TEST目录(模拟数据文件在里面)

二、Serve-Queue 运行流程:

  • php serve start 命令启动:

      

  • 投递模拟数据, 通过 php test/placeOrder.php 1000

       

  • swoole 开始多进程处理,订单数据

      

  • php serve reload:平滑重启Task进程,等同更新(new Job())->doJob()方法;

        新增加文字提醒 “2333, 平滑重启成功”; 哈哈,其实说明已经生效啦!

       

        

  • 守护进程运行:命令执行 php serve start -d

       

      

  • 投递一笔订单,我们测试看下呢-1 待支付状态 0 已自动取消

      

 

       提醒测试文件在 Serve/data/sp_order.sql

 三、实现上述过程,需要下面的这些环境安装

  1,安装Redis 作为队列, MySQL 数据库

  2,   通过命令 pecl install swoole, pecl install seaslog 完成扩展安装

        php --ini 命令确定 php.ini 位置, 把 swoole.so seaslog.so 添加上去即可

  3,通过Mix Delayer 工具(实现延时)

       下载地址:https://github.com/mix-basic/delayer/releases

        使用说明: https://github.com/mix-basic/delayer-client-php

   4,管理Serve 命令,分别有:php serve start | stop | reload | reload:all

         

  5,Git 仓库地址:https://github.com/twomiao/Serve.git  (Redis 延时队列)
                               https://github.com/twomiao/Jober  (beanstalkd消息队列,可查看另一篇文章)

     最重要的一点:记得给个Star 支持哟~

                   

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