laravel延迟队列 取消未支付超时订单订单
1:生成待支付订单时,调用延迟队列
超过十五分钟未支付自动取消
use App\Jobs\endTask; use Illuminate\Support\Carbon;
$resPost1 = array("act" => "cy_order_cancel", "id" => $id);
endTask::dispatch($resPost1)->delay(Carbon::now()->addMinutes(15));
2:延迟队列生效,检测订单状态,依旧未支付改为取消
endTask.php
public function handle()
{
$act = $this->post['act'];
switch ($act){
case "order_cancel"://订单超时取消
Order::cancel($this->post);
break;
default:
break;
}
}
订单取消方法:
public static function cancel($post){
if(isset($post['id'])){
//拿到定时时的订单号处理具体业务逻辑
}
}
任务队列需要重启***写入新的逻辑
ps:消息队列处理可以echo 输出或写入日志文件但不要打断 如die 或框架语言 error方法等会导致消息队列崩溃停止