thinkphp Queue訊息佇列

2021-10-04 10:54:53 字數 2613 閱讀 1080

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,也...