真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Laravel8隊(duì)列系統(tǒng)的新功能和變化

下面由Laravel教程欄目給大家介紹Laravel 8 隊(duì)列系統(tǒng)的新功能和變化,希望對(duì)需要的朋友有所幫助!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、河池網(wǎng)站維護(hù)、網(wǎng)站推廣。

Laravel 8 附帶了很酷的新特性,并對(duì)隊(duì)列系統(tǒng)的一些更改。在本文中,我們將研究這些特性和更改。

變化


Backoff (回退)

已將 retryAfter()方法和 retryAfter排隊(duì)作業(yè),郵件,通知和偵聽器的屬性重命名為backoff

php artisan queue:work命令的 --delay選項(xiàng)也已重命名為 --backoff。

您還應(yīng)該知道,現(xiàn)在可以將數(shù)組傳遞給 backoff屬性,以指示 worker 實(shí)現(xiàn)指數(shù)回退 (exponential backoff):

public $backoff = [30, 60];

或者從 backoff()方法返回一個(gè)數(shù)組:

public function backoff()
{
    return [30, 60]; 
}

在這里使用指數(shù)回退,我們指示 worker 在第一次失敗后延遲 30 秒重試作業(yè),然后在每次失敗后延遲 60 秒。

您還可以在 queue:work命令上使用指數(shù)回退:

php artisan queue:Work --backoff=30,60

作業(yè)過期

排隊(duì)作業(yè),通知和偵聽器的 timeoutAt屬性已重命名為 retryUntil。

使用 $retryUntil指示 worker 繼續(xù)重試作業(yè),直到將來的某個(gè)時(shí)間為止。

您可以將 retryUntil作為作業(yè)類的公共屬性或 retryUntil方法添加:

public function retryUntil()
{
    return now()->addDay();
}

新特性

隊(duì)列閉包

您現(xiàn)在可以在調(diào)度隊(duì)列閉包時(shí)鏈?zhǔn)秸{(diào)用 catch()方法:

dispatch(function () {
    // Job logic...
})->catch(function (Throwable $e) {
    // Handle Failure...
});

如果作業(yè)失敗,將調(diào)用提供給 catch()方法的閉包。

數(shù)據(jù)庫驅(qū)動(dòng)程序可靠性

當(dāng)使用數(shù)據(jù)庫隊(duì)列驅(qū)動(dòng)程序?qū)⒆鳂I(yè)釋放回隊(duì)列時(shí),Laravel 現(xiàn)在將在事務(wù)內(nèi)執(zhí)行操作。這意味著除非添加了新的已發(fā)布實(shí)例,否則不會(huì)從隊(duì)列中刪除作業(yè)。這大大減少了作業(yè)失敗的機(jī)會(huì)。

Redis 驅(qū)動(dòng)程序效率

當(dāng)使用 Redis 隊(duì)列驅(qū)動(dòng)程序批量分發(fā)一組作業(yè)時(shí), Laravel 將通過向 Redis 發(fā)送單個(gè)命令來執(zhí)行操作。以前, Laravel曾經(jīng)向 Redis 發(fā)送多個(gè) rpush命令,每個(gè)作業(yè)一個(gè)。

Worker 優(yōu)雅終止

從 Laravel 8 開始, Workers 將優(yōu)雅退出,并調(diào)用由 App::Terminating()注冊(cè)的任何終止回調(diào)。

Worker 自我終止

為了避免內(nèi)存泄漏,通常的做法是不時(shí)終止您的工作程序,然后讓您的過程監(jiān)視工具啟動(dòng)新的工作程序。通常是通過添加一個(gè)運(yùn)行 queue:restart令的CRON作業(yè)來完成的。

在 Laravel 8中,您可以指示 Workers 在處理了一定數(shù)量的作業(yè)或運(yùn)行了特定的秒數(shù)后退出:

php artisan queue:work --max-jobs=1000 --max-time=3600

命名 Workers

你現(xiàn)在添加 --name選項(xiàng)到 queue:work命令:

php artisan queue:work --name=notifications

添加此功能的主要目的是允許人們自定義 Workers 在運(yùn)行時(shí)如何選擇哪個(gè)隊(duì)列來處理任務(wù):

Worker::popUsing('notifications', function ($pop) {
    $queues = time()->atNight() 
        ? ['mail', 'webhooks'] 
        : ['push-notifications', 'sms', 'mail', 'webhooks'];

    foreach ($queues as $queue) {
        if (! is_null($job = $pop($queue))) {
            return $job;
        }
    }
});

任務(wù)批處理

Laravel 的任務(wù)批處理使您可以分派許多任務(wù),以供您的 Workers 并行處理。 您可以在批處理中的所有任務(wù)都處理完畢或任何批處理任務(wù)失敗后執(zhí)行操作:

Bus::batch([
    new ProcessFile(1),
    new ProcessFile(2),
    new ProcessFile(3),
])->dispatch();

您可以在官方文檔中找到有關(guān)“作業(yè)批處理”的更多信息。

作業(yè)鏈

您現(xiàn)在可以使用 Bus直接調(diào)度一系列作業(yè):

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->dispatch();

您還可以添加一個(gè) catch()回調(diào),如果鏈中的任何作業(yè)失敗都會(huì)被調(diào)用:

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->catch(function(){
    // Handle the chain failure.
})
->dispatch();

Horizon 平衡率

Horizon 中添加了兩個(gè)新的配置選項(xiàng): balanceMaxShiftand balanceCooldown。

'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceMaxShift' => 5,
        ],
    ],
],

balanceMaxShift設(shè)置每次 Horizon 擴(kuò)展工作程序池時(shí)要添加或刪除的工作進(jìn)程數(shù)。在 Horizon 的早期版本中,僅添加或刪除了一個(gè)工作進(jìn)程,現(xiàn)在您可以控制該數(shù)目。

至于 balanceCooldown,它設(shè)置每個(gè)縮放操作之間等待的秒數(shù)。在 Horizon 的早期版本中,這被硬編碼為3秒。

'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceCooldown' => 1,
        ],
    ],
],

原文地址:https://dev.to/themsaid/features-and-changes-coming-to-laravel-8-s-queue-system-5amg

譯文地址:https://learnku.com/laravel/t/50086


網(wǎng)頁題目:Laravel8隊(duì)列系統(tǒng)的新功能和變化
文章網(wǎng)址:http://weahome.cn/article/cgehhp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部