国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

當(dāng)redis消息隊列出現(xiàn){redis-queue}-failed,后面將不再消費

掌柜

問題描述

為了提高API的并發(fā)能力,我將一個文章接口的請求增加閱讀量views字段的工作放進(jìn)了消息隊列中。
但有時進(jìn)行代碼的更迭的時候,redis-queue的隊列還沒有完成消費,就會變?yōu)閒ailed放進(jìn)同一個key中,之后消費就會卡住,這個key中后面會追加到無限大。
有什么辦法可以避免這種情況?

為此你搜索到了哪些方案及不適用的原因

// queue
class ViewsUpdateSend implements Consumer
{
    // 要消費的隊列名
    public $queue = 'zrViews';
    // 連接名,對應(yīng) plugin/webman/redis-queue/redis.php 里的連接`
    public $connection = 'default';
    // 消費
    public function consume($data)
    {
        // 獲取ID
        $id = explode(',', base64_decode($data))[0];
        // 增加瀏覽量
        Article::find($id)->increment('views');
    }
}
// 控制器
            //判斷文章是否存在
            if (!$article) {
                $data = json_encode([
                    'code' => 0,
                    'msg' => '暫無內(nèi)容',
                ]);
            } else {
                Client::send('zrViews', $i);
864 1 0
1個回答

latin

失敗會有日志,從{redis-queue}-failed取出來幾條看下日志,不會無緣無故失敗,失敗原因找到解決就好了吧。
你日志都沒貼出來

  • 掌柜 2024-09-26

    正常沒有失敗,失敗原因剛剛說了呀就是更新代碼時候?qū)α袥]有消費完,這個時候第一條就會failed,之后后面的就會堵塞,也沒有辦法編輯key把第一條刪掉,因為隊列不斷在擴(kuò)大長度,只能刪除整條key,這樣后面就正常了。

  • latin 2024-09-26

    {redis-queue}-failed 里面放的是所有失敗隊列及日志,還要看具體日志。{redis-queue}-failed后面會追加到無限大說明一直在消費,但是因為某種原因失敗了,還是要看日志為什么失敗

  • 掌柜 2024-09-26

    我下次更新代碼時候看一下日志,感謝回答

??