thinkphp6消息队列think-queue

// 创建JobQueue.php
<?php
namespace app\job;

use think\queue\Job;

class JobQueue
{
public function fire(Job $job, $data)
{
    if ($job->attempts() > 3) {
        $job->delete();
    }
    $doJob = $this->doJob($data);
    if ($doJob) {
        $job->delete();
    }else{
        $job->release(3);		// 3秒后重试
    }
}

/**
 * 根据消息中的数据进行实际的业务处理...
 * @param array|mixed $data
 */
	private function doJob($data)
 {
 	// 处理逻辑、数据库操作
    return true;
 }

/**
 * @param $data
 * @Version 2.0 失败处理
 */
    public function failed($data)
    {
        // 失败处理
 	}
}

// 在控制器使用 Index.php
<?php
namespace app\http;
use think\facade\Queue;
class Index{
public function index(){
		$class = 'app\job\JobQueue';	// 类名
		$name = 'my_queue';	// 队列名称
		$rest = $this->request->post();
		Queue::later(1, $class, $rest, $name);
	}
}

版权声明:本文为m0_54009761原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。