下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第如何用RabbitMQ和Swoole實現(xiàn)一個異步任務系統(tǒng)從圖中可以看到,我們這個系統(tǒng)是一個基于事件的異步任務系統(tǒng)。就是說當一個事件產(chǎn)生時,生產(chǎn)者將事件拋給調(diào)度器,調(diào)度器負責查詢事件下有哪些任務,然后將這些任務丟到相應的隊列中,最后由消費者消費任務隊列中的任務。
在整個系統(tǒng)中主要分為三大部分
1.事件生產(chǎn)者,即產(chǎn)生消息事件的一方。
2.任務調(diào)度器(Scheduler),負責注冊事件并調(diào)度任務。
3.消費者(Worker),負責消費任務隊列中的任務。
事件生產(chǎn)者
事件生產(chǎn)者很簡單,在業(yè)務系統(tǒng)中直接調(diào)用即可,代碼如下。
require_onceDIR.'/../autoload.php';
useAsynclib\Ebats\Event;
$event=newEvent('order_paied');//定義事件
$event-setOptions(['order_id'='FB138020392193312']);//事件產(chǎn)生的參數(shù)
$event-publish();
}catch(Exception$exc){
echo$exc-getMessage();
}
任務調(diào)度器
調(diào)度器主要做兩件事,一是注冊事件,另一個是調(diào)度任務。
注冊事件代碼如下:
//注冊事件
EventManager::register('order_create','closeOrder','demo',10);//關閉未付款訂單(延遲任務)
EventManager::register('order_paied','virtualShipping','demo');//虛擬商品自動發(fā)貨
這樣就注冊了兩個事件,事件下各有一個任務。
具體調(diào)度部分代碼很簡單,就不多贅述,有興趣的可以去看代碼。
重頭戲來了,一個異步任務系統(tǒng)最重要的就是消費端了,現(xiàn)在讓我們來看下Worker的流程圖。
可以看到,在這里我們采用了兩個交換器和兩個隊列,一個負責處理正常的任務即ntask,另一個負責處理需要延遲執(zhí)行的任務即dtask。簡單描述下一個任務的生命周期。
1、task產(chǎn)生,進入正常任務的交換器Exchange[ebats_core_ntask]
2、交換器根據(jù)topic將任務分發(fā)到對應的隊列中
3、子進程ntask阻塞等待成功獲取到task,并執(zhí)行該任務
4、執(zhí)行失敗,需要重試時拋出RetryException,不需要重試時拋出TaskException
5、子進程ntask捕獲到重試異常將任務拋給延遲任務的交換器Exchange[ebats_core_dtask]
6、將任務執(zhí)行信息回調(diào)給上層開發(fā)者以便保存查看
1、子進程dtask阻塞等待成功獲取到task,并執(zhí)行該任務
2、執(zhí)行失敗,需要重試時拋出RetryException,不需要重試時拋出TaskException
3、子進程dtask捕獲到重試異常將任務拋給延遲任務的交換器Exchange[ebats_core_dtask]
4、將任務執(zhí)行信息回調(diào)給上層開發(fā)者以便保存查看
消費者代碼如下:
require_onceDIR.'/../autoload.p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省西安建筑科技大學附屬中學2025-2026學年七年級上學期期末語文試題(含答案)(解析版)
- 2026貴州黔東南州鎮(zhèn)遠縣第一批城鎮(zhèn)公益性崗位人員招聘50人備考題庫及完整答案詳解一套
- 2026年社交媒體廣告精準投放指南
- 非金屬廢料處理質(zhì)量檢驗與管控手冊
- 2026重慶奉節(jié)縣青蓮鎮(zhèn)招聘公益性崗位6人備考題庫及答案詳解(新)
- 2026年碳交易市場操作實務培訓
- 計算機行業(yè)“一周解碼”:網(wǎng)絡安全政策再加碼
- 職業(yè)噪聲與心血管疾病政策干預的效果評估
- 職業(yè)共病管理中的人才培養(yǎng)模式
- 職業(yè)健康監(jiān)護中的個性化干預方案制定
- GB/T 46392-2025縣域無障礙環(huán)境建設評價規(guī)范
- 香港專才移民合同協(xié)議
- 陜煤集團運銷合同范本
- DB32-T 4285-2022 預應力混凝土空心方樁基礎技術規(guī)程
- 數(shù)獨六宮格(高級難度)游戲題目100題
- 刺殺操課件教學課件
- 福建省廈門市雙十中學2026屆數(shù)學九年級第一學期期末復習檢測模擬試題含解析
- 配電自動化系統(tǒng)設備維護手冊
- 全市 控告申訴知識競賽題
- 克羅恩病患者癥狀管理的護理查房?
- 廣西壯族自治區(qū)2025年招標采購從業(yè)人員考試(招標采購專業(yè)實務初級)測試題庫及答案
評論
0/150
提交評論