[ Lumen 5.2 文檔 ] 更多特性 -- 隊列

來源:互聯網
上載者:User

1、簡介

Lumen佇列服務為各種不同的後台隊列驅動提供了統一的API。隊列允許你延遲耗時任務(例如發送郵件)的執行,從而大幅提高web請求的響應速度。

1.1 配置

隊列配置選項位於 .env檔案。

1.2 隊列驅動預備知識

資料庫

要使用 database作為隊列驅動,需要一張資料庫表來存放任務:

Schema::create('jobs', function (Blueprint $table) {    $table->bigIncrements('id');    $table->string('queue');    $table->longText('payload');    $table->tinyInteger('attempts')->unsigned();    $table->tinyInteger('reserved')->unsigned();    $table->unsignedInteger('reserved_at')->nullable();    $table->unsignedInteger('available_at');    $table->unsignedInteger('created_at');    $table->index(['queue', 'reserved', 'reserved_at']);});

其它隊列依賴

下面是以上列出隊列驅動需要安裝的依賴:

  • Amazon SQS: aws/aws-sdk-php ~3.0
  • Beanstalkd: pda/pheanstalk ~3.0
  • Redis: predis/predis ~1.0

2、和Laravel的不同之處

和架構許多其它功能一樣,Lumen的隊列任務方法依賴於Laravel隊列任務,因此,要瞭解Lumen隊列任務的更多細節,可查看 完整的Laravel隊列文檔。

但是,Lumen和Laravel的隊列實現也有少許不同支援,下面我們就來討論這些區別。首先我們來看隊列任務的產生。

2.1 產生器

Lumen並沒有內建自動建立新的任務類,取而代之的,你需要拷貝架構內建的 ExampleJob類,這個類提供了每個隊列任務都共用的基本類結構, ExampleJob繼承的基類 Job已經包含了 InteractsWithQueue, Queueable和 SerializesModels這些trait:

    

2.2 分發任務

再次重申,關於分發隊列任務的完整資訊請參考Laravel隊列文檔,和Laravel架構一樣,你可以使用 dispatch方法從Lumen應用的任何地方分發任務:

dispatch(new ExampleJob);

當然,你還可以使用 Queue門面,如果你選擇使用這個門面,需要取消檔案 bootstrap/app.php中 $app->withFacades()前面的注釋:

Queue::push(new ExampleJob);
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.