30 lines
874 B
PHP
30 lines
874 B
PHP
<?php
|
|
|
|
namespace app\queue;
|
|
|
|
use think\facade\Log;
|
|
use think\queue\Job;
|
|
|
|
abstract class BaseQueue
|
|
{
|
|
public function fire(Job $job, $data)
|
|
{
|
|
$start = microtime(true);
|
|
try {
|
|
Log::info("消息队列接收到消息,当前队列: ".self::class.", 携带数据: ".json_encode($data));
|
|
$this->run($job, $data);
|
|
Log::info("消息队列执行成功:" . static::class);
|
|
$job->delete();
|
|
} catch (\Throwable $e) {
|
|
Log::error("消息队列执行异常:" . $e->getMessage());
|
|
Log::info($e->getTraceAsString());
|
|
$job->release(10); // 或 $job->fail()
|
|
}
|
|
|
|
$end = microtime(true);
|
|
Log::info("消息队列执行完毕, 耗时:" . ($end - $start) . 's');
|
|
}
|
|
|
|
// 子类实现具体逻辑
|
|
abstract public function run(Job $job, $data);
|
|
} |