<?php<448901948@qq.com>
namespace think\queue\job;
use think\queue\Job;
use think\queue\connector\Redis as RedisQueue;
class Redis extends Job
{
protected $redis;
protected $job;
public function __construct(RedisQueue $redis, $job, $queue)
{
$this->job = $job;
$this->queue = $queue;
$this->redis = $redis;
}
public function fire()
{
$this->resolveAndFire(json_decode($this->getRawBody(), true));
}
public function attempts()
{
return json_decode($this->job, true)['attempts'];
}
public function getRawBody()
{
return $this->job;
}
public function delete()
{
parent::delete();
$this->redis->deleteReserved($this->queue, $this->job);
}
public function release($delay = 0)
{
parent::release($delay);
$this->delete();
$this->redis->release($this->queue, $this->job, $delay, $this->attempts() + 1);
}
}