redis 队列的问题 消费队列跟加入的队列数量不一样

Gin

问题描述

已解决 去年用宝塔守护进程的问题, 启动停止重启均有问题,后废弃,未排查残留进程. 感谢老大的支持@walkor
同一时间加入 101条延时队列
截图
消费时只有二三十条
数据库表id 从1600 到1700 消费队列打印 只有这么多
截图

程序代码或配置

class AttendanceEnd implements Consumer
{

    // 要消费的队列名
    public $queue = 'end-attendance';

    // 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
    public $connection = 'default';

    // 消费
    public function consume($data)
    {
        $attendance_id = $data['attendance_id']; echo $attendance_id . PHP_EOL;
    }
}

重现问题的步骤

这里写步骤
重试好几次 数量都对不上 会不会延时的时间一样 到时多进程消费出现bug

操作系统环境及workerman/webman等具体版本

webman
截图

求助

1256 3 0
3个回答

walkor 打赏

有可能有其它消费者在消费

  • Gin 2023-03-17

    只有 webman的消费者在消费, 没有其它的消费者 windows单进程没出现问题 linux多进程 出现这样

  • walkor 2023-03-17

    把消费者关闭,投递消息,看下redis里有多少记录

  • Gin 2023-03-17

    redis记录看了 数量是够的

  • Gin 2023-03-17

    也仔细检查了其它消费者队列名称, 没有重复的

  • walkor 2023-03-17

    没有人反馈过这个问题,如果你确认redis里记录是对的,我能想到的就是被其他进程消费了。需要自己定位下了

  • Gin 2023-03-17

    好的,老大, 查了一天了, 没查出来..哭死

  • walkor 2023-03-17

    查出来欢迎反馈,给大家参考

  • Gin 2023-03-17

    服务停了,确实有进程消费 kill不掉

Gin

截图

  • 暂无评论
Gin

截图

  • walkor 2023-03-17

    执行 ps uaxf 找到主进程pid,执行kill -SIGINT pid

  • Gin 2023-03-17

    已杀完,问题解决. 之前宝塔的守护进程导致的问题

年代过于久远,无法发表回答
×
🔝