redis安裝
php-redis擴展
安裝queue
- composer require topthink/think-queue
消息隊列實現(xiàn)
- 添加消息隊列:think\Queue::push( 'app\que\Job' , $data , 'createOrderJob' );// 參數(shù)1:隊列任務(wù)所在類;參數(shù)2:隊列任務(wù)的業(yè)務(wù)參數(shù);參數(shù)3:任務(wù)名稱
- 隊列任務(wù)函數(shù)
/**
* fire方法是消息隊列默認調(diào)用的方法
* @param \think\queue\Job $job 當前的任務(wù)對象
* @param array|mixed $data 發(fā)布任務(wù)時自定義的數(shù)據(jù)
*/
public function fire(\think\queue\Job $job, $data)
{
//業(yè)務(wù)處理代碼
$isJobDone = $this->create($data);
if ($isJobDone) {
// 任務(wù)執(zhí)行成功彪腔,刪除任務(wù)
$job->delete();
} else {
if ($job->attempts() > 2) {
// 重試兩次后做以下操作
// 可以刪除這個任務(wù)
$job->delete();
// 也可以重新發(fā)布這個任務(wù)
// $job->release(2); //延遲2秒后再次執(zhí)行
}
}
}
private function create($data)
{
Log::info('執(zhí)行隊列:'.json_encode($data));
return true;
}