我有一個系統(tǒng),在這個系統(tǒng)中,我每小時都會啟動大量的作業(yè),我希望它們在不同的redis連接上處理,與彈出的主要作業(yè)分開,這樣它們就不會干擾推到隊列中的其他作業(yè)(即延遲作業(yè))。
因此,我做了以下工作,創(chuàng)建了一個新的redis連接:
'kingdom_jobs' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 2),
],
然后創(chuàng)建了一個新的隊列連接:
'kingdom_jobs' => [
'driver' => 'redis',
'connection' => 'kingdom_jobs', // Uses the new connection
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
],
然后在旋轉(zhuǎn)所有這些作業(yè)的循環(huán)中:
Kingdom::chunkById(250, function($kingdoms) use ($service) {
foreach ($kingdoms as $kingdom) {
UpdateKingdomJob::dispatch($kingdom)->onConnection('kingdom_jobs');
}
});
The issue?
是的,他們被推到了這個新的連接上,我在地平線上看到他們——超過500個——但他們什么也沒做。它們不會被處理。有沒有辦法告訴horizon處理這個附加連接?
我目前在開發(fā)中使用php artisan horizon
來處理作業(yè)-還有其他步驟嗎?
我假設(shè)從文檔中,我遺漏了一些步驟,我假設(shè)它與文檔中的php artisan queue:work --tries = 3
有關(guān)?試著那樣做沒用。我是否需要此新連接的另一個horizon實例,或者我是否配置horizon以了解此連接?
Help?
很可能您沒有Horizon supervisor設(shè)置來監(jiān)視新隊列。
查看地平線配置:
看起來我們可以向生產(chǎn)環(huán)境添加另一個主管(如果需要,還可以添加其他主管):