2017-03-16 89 views
2

我試圖圍繞Laravel的queued event listener vs jobs環繞我的頭。Laravel排隊等候事件聽衆與工作的區別

對我來說,這似乎是雙方都非常相似:

  1. 雙方實現ShouldQueue接口(在事件偵聽器的情況下,這是一個選項)
  2. 雙方落實handle()failed()(可選的)方法來執行它們各自的任務。

對我而言,基本上都是可以異步運行的排隊項目。

我能夠到目前爲止區別是什麼工作有更多的「先進」功能/像$timeout$tries性能配置,你也可能會延遲一個作業(Illuminate\Bus\Queueable性狀提供)的「觸發」。

還有更多我確定,但我指出了那個彈出給我。

所以,問題是,兩者之間的實際區別是什麼,更重要的是,您什麼時候比另一個更受青睞?

回答

-1

好問題,我將開始怎樣laravel文檔解釋了它

活動:Laravel的事件提供了一個簡單觀察者實現,允許您訂閱和監聽發生在你的應用程序的各種活動。事件是解耦應用程序的各個方面的好方法,因爲單個事件可以有多個不依賴於彼此的偵聽器。

凡爲

喬布斯:招聘類是非常簡單,通常只包含一個手柄的方法,當作業由隊列處理被調用。

基本上都是推擠工作到隊列和/或做一些處理其要求做的,我要說的主要區別是他們如何被稱爲。

活動在瞭望被稱爲其中作爲總是明確地稱爲。活動的

力量是我們可以註冊多個監聽單個事件和事件助手將事件分派到所有註冊的偵聽器沒有我們稱他們明確。在喬布斯的情況下,我們必須明確地給他們打電話。

總之,如果你有一個場景,一個事件會觸發多個方法調用事件會有所幫助。如果其調用Jobs的單個方法是好的。

活動方案:用戶註冊 - >發送電子郵件,調度免費贓物,爲用戶創建配置文件userxyz.site.com一個子等等等等

喬布斯方案:用戶註冊 - >發送電子郵件。

+0

對不起,遲到的迴應。我同意大部分陳述的觀點。但是,大多數觀點都是針對事件與工作而非排隊事件與工作。說,如果Laravel的未來版本省略了排隊的事件,我們會錯過任何東西嗎? –

+1

Downvoted,因爲這篇文章沒有回答OP的問題,甚至沒有回答。問題是**排隊**事件監聽器,而不是事件。請考慮更新您的答案。 – sepehr