Redis 延时(普通)队列无法被监听或被消费

我的redis配置

.env

QUEUE_CONNECTION=redis

REDIS_HOST=xxxxx
REDIS_PASSWORD=123456
REDIS_PORT=6379

配置文件

queue.php

        'redis' => [
            'driver' => 'redis',
            'connection' => 'queues',
            'queue' => env('REDIS_QUEUE', 'default'),
            'retry_after' => 90,
            'block_for' => null,
            'after_commit' => false,
        ],

database.php

        'queues'         => [
            'url'      => env('REDIS_URL'),
            'host'     => env('REDIS_HOST', '127.0.0.1'),
            'username' => env('REDIS_USERNAME'),
            'password' => env('REDIS_PASSWORD'),
            'port'     => env('REDIS_PORT', '6379'),
            'database' => env('REDIS_DB', '1'),
        ],

任务类部份代码

class TimeoutSettlement implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;


    public function __construct()
    {

    $this->onConnection('redis')
        ->onQueue('test_queue')
        ->delay(now()->addMinute());
    }
}

运行的命令

php artisan queue:work redis --queue=test_queue

目前的问题
本地可以正常的发布与监听消费。

线上环境可以正常发布。但是监听无响应也无法消费

有大佬知道的吗。昨晚上线上还是正常的。今天一来就是监听的队列是无效了

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
SherlockZw
最佳答案

破案 本帅分析你可能需要队列名称加上{},{test_name},并且监听他

10个月前 评论
浪里小白龙 (楼主) 10个月前
忆往昔弹指间 10个月前
cccdz 10个月前
讨论数量: 10
SherlockZw

不会 下一位

10个月前 评论

监听的队列无效是啥意思?有具体的报错日志么?

10个月前 评论
浪里小白龙 (楼主) 10个月前

如果你本地正常的话,我想可能是出在环境差异导致的,猜想你执行队列的cli配置可能和你php-fpm配置不同,排查下是否cli环境和php-fpm环境下使用了不同的缓存驱动配置、队列配置,导致投递的队列任务投递到别的地方,但是cli队列任务监听的另一个缓存环境,所以一直没有队列任务进来

10个月前 评论
浪里小白龙 (楼主) 10个月前
浪里小白龙 (楼主) 10个月前
SherlockZw

破案 本帅分析你可能需要队列名称加上{},{test_name},并且监听他

10个月前 评论
浪里小白龙 (楼主) 10个月前
忆往昔弹指间 10个月前
cccdz 10个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!