首頁  >  文章  >  後端開發  >  Laravel 隊列服務

Laravel 隊列服務

高洛峰
高洛峰原創
2016-11-15 14:23:301049瀏覽

QueueServiceProvider

Laravel 各種服務的註冊大多都是透過各種 ServiceProvider 綁定的,佇列服務也不例外,開啟 namespace IlluminateQueueQueueServiceProvider 檔案定位到 register 方式產生了一個佇列任務類,該類別繼承了 namespaceAppJobsJob, 實作了介面 SelfHandling 和 ShouldQueue , 或許你會問這兩個介面啥規範都沒規定啥用啊(先略過),重點在兩個兩個介面trait 內, trait 內, trait 內, 對佇列任務實現了各種操作,刪除,重試,延遲等。

在分配任務的時候我們使用了輔助函數 dispatch ,其實是 IlluminateBus 下 Dispatcher 類的 dispatch方法

public function register()
{
   // 注册队列管理器 一旦实例化,为队列连接器注册各种解析器,这些连接器负责创建接受队列配置和实例化各种不同队列处理的类。
   // 按照配置文件注册一个默认连接方式 在此使用 redis
    $this->registerManager();
   // 注册队列各种命令 队列连接 重启等。
    $this->registerWorker();
   // 注册队列监听命令
    $this->registerListener();
   // 5.1后弃用
    $this->registerSubscriber();
   // 注册队列失败处理
    $this->registerFailedJobServices();
   // Register the Illuminate queued closure job. 什么用,后面再看。
    $this->registerQueueClosure();
}

在此,我們先看下 namespace IlluminateBusBusBusBusBusB53kd

上面任務進入隊列的整個流程就明白了。那任務出隊列呢?在文件中我們可以看到,我們透過執行 php artisan queue:work 這條語句進行佇列的監聽,那在此就看下 namespace IlluminateQueueConsoleWorkCommand::fire(),夜很深了,下面自己看吧!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn