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 支持喲~

                   

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