laravel 隊列 延時隊列-Redis


直接上代碼了

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Mockery\Exception;

# php artisan  queue:work  --queue='隊列名稱,隊列名稱2'; 按照順序處理 開啟
# 調起這個控制器 數據處理完成 傳給指定隊列【前提 隊列已經開啟】
# 隊列進行數據的處理【如 判斷訂單是否滿足過期時間 未支付,未支付撤銷訂單 返回庫存數量】
# 若隊列有問提  在隊列的異常中處理 是否再次進入隊列處理 還是...


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

    private $data;
    private $tres;  # 最大嘗試次數
    private $timeout;   # 最大超時時間

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        //

        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //  這里沒啥事。就是你的業務邏輯 
 
    echo 123;
} /** * 失敗處理 存表 單獨設置定時任務 重新跑 * @param Exception $exception */ public function failed(Exception $exception) { echo 222; var_dump($exception->getMessage()); # 打印錯誤信息 } }

 

 

 

重點是控制器這里 ;

<?php

namespace App\Http\Controllers\task;

use App\Jobs\task;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class taskController extends Controller
{
    //模擬下單
    public function task()
    {
        $data = [
            'tid'   => date('m-d H:i:s').uniqid(),
            'name'  => 'ethan',
            'address'  => 'ethan'
        ];

       $jobs = new task($data);
       # 把任務放到隊列中
        $jobs->dispatch($jobs)->onQueue('task')->delay(5);

        # ->onQueue()->delay()
        # onQueue 放入指定隊列中去,如果不加 則redis 會放到默認隊列中。
        # delay 延遲的意思。可以實現定時任務 單位秒
        # addMinutes(10)); 延遲的時間 單位分鍾  延遲隊列可以做訂單下單 多久未支付 自動取消訂單 恢復庫存的動作

        # 以上為 存redis 隊列成功

        # 最后執行 php artisan  queu e:work  --queue='隊列名稱';
        return 'ok!';
    }
}

 我這里執行沒有任何問題 因為是前倆天做的 就不貼結果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM