laravel8使用延迟消息队列

1.安装

composer require vladimir-yuldashev/laravel-queue-rabbitmq

2.修改配置

QUEUE_CONNECTION=redis

3.创建job

php artisan make:job Queue

<?php

namespace App\Jobs;

use App\Models\Good;
use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;

class Queue implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $oid;
    public $display;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($oid,$display)
    {
        $this->oid=$oid;
        $this->delay($display);
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        DB::beginTransaction();
            try {
                $result=Order::where('id',$this->oid)->first();
                if($result->status==0){
                    $res=$result->update(['status'=>3]);
                    if($res){
                        $goods=Good::where('id',$result['goods_id'])->first();
                        $number=[
                            'sum'=>$goods->sum+$result->num,
                            'freeze_num'=>$goods->freeze_num-$result->num
                        ];
                        $goods->update($number);
                    }
                    DB::commit();
                    echo "半小时内未支付,订单已失效";
                }
            }
            catch (\Exception $e){
                DB::rollBack();
            }
        }


}

4.控制器调用

/**
*$order->id  订单id 
*$time 延迟时间 
*/
$this->dispatch(new Queue($order->id,$time));

5.命令行执行消费

php artisan queue:work

laravel8中rabbitmq的使用:RabbitMQ在Laravel中的使用 - 掘金

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值