redis-queue队列的消费代码更新了,总有一些进程走的是旧逻辑,新代码的逻辑不生效

kanin

问题描述

这里写问题描述
redis-queue队列的消费代码更新了,总有一些进程走的是旧逻辑,新代码的逻辑不生效。

我试过php start.php restart -d ,也试过ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9 都没有用。

最后只能改了队列的名称,换了个队列名才执行了新的逻辑,请问有人知道是什么要怎么才能让代码生效吗。

不然每次修改消费代码的文件,都得换个消费队列名称,那得多麻烦啊

244 2 1
2个回答

Tinywan

reload 就可以让代码生效吗

  • kanin 2024-10-30

    我试过不行,其他逻辑reload生效了,不生效那个类怎么也都不生效,reload、restart、 kill -9都试过,最后都没生效,开了8个消费队列,总有些时候走的时候旧逻辑,最后开了1个消费队列,居然直接走旧逻辑了,然后我改了队列名称,之后都新入队的都是走新逻辑了,真的很奇怪,我就一台机子,没有其他机器在跑。讲道理就算reload,restart无效,终极杀招 ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9 也该杀完孤儿进程了吧,实在想不通什么原因

walkor 打赏

怎么判断走了老逻辑?
检查下是不是谁的开发机连到队列去了,消费了消息,有很多开发者犯了这个错误。

  • kanin 2024-10-30

    其实我也怀疑是有人的开发机连到了队列去了。

    逻辑判断之所以确定是因为,新老逻辑都调用了第三方程序,第三方程序那边有调用日志,新逻辑换了个服务商的,理论上新逻辑上了之后,老服务商就不会再收到请求了。但是之前的服务商还是收到调用请求,所有我就知道还有队列再调用老的逻辑。后来换了队列名称,就再也没有调用老的服务商那边有接口调用日志了。

    讲道理,reload, restart, 甚至是kill -9都用了 ,没道理不生效的。 最有可能的就是有其他人的环境连接了公司的redis了

  • walkor 2024-10-30

    netstat -anpt | grep ':6379' | grep ESTABLISHED
    执行命令看下哪些机器在连redis 6379端口

  • kanin 2024-10-30

    感谢哥们,找到了确实是别的机器再跑,我把账号密码都换了,是之前的人连进来了

×
🔝