2016-12-25 102 views
4

我有Laravel 5項目。這是多租戶項目,所以我有一個包含多個數據庫的文件夾項目。與多個數據庫運行laravel隊列

當我使用php artisan queue:listen時,它只適用於當前的數據庫設置。我使用database隊列驅動程序,因此每個租戶都有自己的通知表。如何設置隊列偵聽器來檢查所有數據庫作業?

回答

4

如果您想繼續使用database驅動程序,我會建議設置另一個數據庫,其中包含所有排隊的作業和失敗的作業。

雖然它不在配置文件中,但在看完代碼之後,它看起來應該可以在您的隊列配置中添加一個connection參數,然後隊列將與由該連接指定的數據庫。

因此,在你config/database.php,定義您的隊列數據庫的新連接:

'connections' => [ 
    // your existing connections 

    'queue' => [ 
     'driver' => 'mysql', 
     'database' => 'your-queue-database', 
     // rest of connection information (host, port, etc) 
    ], 
], 

然後,在你config/queue.php,告訴你的數據庫隊列使用新的連接:

'connections' => [ 
    'database' => [ 
     'driver' => 'database', 
     'connection' => 'queue', // connection name from database config 
     'table' => 'jobs', 
     'queue' => 'default', 
     'retry_after' => 90, 
    ], 
] 

的其他選項將轉移到另一個隊列驅動程序。設置redis,sqs或者beanstalk。

+0

嗨,感謝您的答案..這兩個工作,但是當我使用'redis'如何看到當前掛起的工作或失敗的工作就像'數據庫'。所以我知道是否有錯誤或某個工作沒有按預期工作?順便說一句,我使用laravel僞造服務器設置。 – martiendt

+0

@martiendt無論您使用哪種類型的隊列,失敗的作業在超過隊列工作者允許的最大嘗試次數時都會報告給數據庫中的「failed_jobs」表。 – patricus

+0

所以當我選擇使用redis時,我需要設置我的隊列數據庫呢?好的,謝謝@patricus我會試試看 – martiendt