* @version : HuoMp 1.0
*/
namespace huolib\queue\job;
use huolib\queue\constant\EventConst;
use huomp\controller\cpa_reversal\Quhulian;
use think\queue\Job;
class CpaReversalFire extends Fire {
static $g_i = 0;
/**
* fire方法是消息队列默认调用的方法
*
* @param Job $job 当前的任务对象
* @param array|mixed $data 发布任务时自定义的数据
*/
public function fire(Job $job, $data) {
if ($job->attempts() > 1) {
$job->delete();
}
self::$g_i++;
$_is_job_done = $this->doJob($data);
$runtime = round(microtime(true) - THINK_START_TIME, 10);
echo $runtime.' '.self::$g_i;
if ($_is_job_done) {
//如果任务执行成功, 记得删除任务
$job->delete();
// print("Hello Job has been done and deleted"."\n");
} else {
if ($job->attempts() > 3) {
//通过这个方法可以检查这个任务已经重试了几次了
// print("Hello Job has been retried more than 3 times!"."\n");
$job->delete();
// 也可以重新发布这个任务
// print("Hello Job will be availabe again after 2s."."\n");
//$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
}
}
}
/**
* 根据消息中的数据进行实际的业务处理
*
* @param array $data 发布任务时自定义的数据
*
* @return bool 任务执行的结果
*/
public function doJob($data) {
switch ($data['event']) {
case EventConst::EVENT_CPA_REVERSAL_QUHULIAN:
$_rs = (new Quhulian())->QuhulianNotify($data);
break;
default:
$_rs = false;
}
return $_rs;
}
}