thinkphp官方團隊開發的乙個專門支援佇列服務的擴充套件包,使用composer管理,使用起來非常方便queue內建了 redis,database,topthink ,sync這四種驅動,本文使用redis驅動。
queue訊息訊息可進行發布,獲取,執行,刪除,重發,失敗處理,延遲執行,超時控制等操作。
一旦需處理資料加入到任務內就不能刪除
是用composer進行安裝,命令:composer require topthink/think-queue 2.0.x-dev (這裡由於3.0版本需要tp6支援 本文使用tp5.1 故安裝2.0.x-dev版)
本文使用型別是redis,假如你的當前環境沒有redis,則自行安裝
配置檔案如下:
<?php
return
['connector'
=>
'redis'
,// 可選驅動型別:sync(預設)、redis、database、topthink等其他自定義型別
'expire'
=>60,
// 任務的過期時間,預設為60秒; 若要禁用,則設定為 null
'default'
=>
'default'
,// 預設的佇列名稱
'host'
=>
'127.0.0.1'
,// redis 主機ip
'port'
=>
6379
,// redis 埠
'password'
=>'',
// redis 連線密碼
'select'
=>0,
// 使用哪乙個 db,預設為 db0
'timeout'
=>0,
// redis連線的超時時間
'persistent'
=>
false
,// 是否是長連線
];
<?php
namespace
;use
think\controller
;use
think\facade\cache
;use
think\queue
;class
index
extends
controller
/** * 乙個使用了佇列的 action
*/public
function
actionwithhellojob()
else
}}
<?php
namespace
;use
think\controller
;use
think\queue\job
;class
hello
extends
controller
$isjobdone
=$this
->
dohellojob
($data);
if($isjobdone
)else}}
/** * 有些訊息在到達消費者時,可能已經不再需要執行了
* @param array|mixed $data 發布任務時自定義的資料
* @return boolean 任務執行的結果
*/private
function
checkdatabasetoseeifjobneedtobedone
($data
)/**
* 根據訊息中的資料進行實際的業務處理...
*/private
function
dohellojob
($data
)}
執行建立生成者推送至消費者php index.php test/index/actionwithhellojob
顯示2020-03-26 16:13:48 a new hello job is pushed to the mq
消費者消費php think queue:work --queue hellojobqueue
顯示
hello job started. job data is:
array
('name'
=>
'supperl'
,'age'
=>22,
)<
/info>
hello job is fired at 2020-03
-2616:
21:34<
/info>
hello job is done!
<
/info>
hello job has been done and deleted<
/info>
配置supervisord 程序守護,待續~~~
訊息和訊息處理之訊息迴圈
在win32程式設計中,訊息迴圈是相當重要的乙個概念,看似很難,但使用起來卻是非常簡單。在winmain函式的最後,有下列 while getmessage msg,null,0,0 windows應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...
訊息和訊息佇列
在傳統的c 程式當中,我們呼叫 fopen 函式開啟檔案,這個庫函式最終呼叫作業系統 提供的函式 來開啟檔案。而在 windows 中,不僅使用者程式可以呼叫系統的 api函式,反回來,系統也會呼叫使用者程式,這個呼叫是通過訊息來進行的。windows程式設計是一種完全不同於傳統的 dos方式的程式...
訊息佇列 訊息複製
訊息複製需要解決 高效能,高可用,資料一致性 高效能 寫的副本越多,寫的效能越低,讀取不影響 資料一致性,必須採用主從模式的複製方式,同時需要保證在任何時刻,集群的主節點不能超過乙個。高可用 在主節點宕機後,可以盡快選出新的主節點 一 rocketmq 1 傳統複製 複製的基本單位是broker,也...