這里寫問題描述
redis-queue隊列的消費代碼更新了,總有一些進(jìn)程走的是舊邏輯,新代碼的邏輯不生效。
我試過php start.php restart -d ,也試過ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9 都沒有用。
最后只能改了隊列的名稱,換了個隊列名才執(zhí)行了新的邏輯,請問有人知道是什么要怎么才能讓代碼生效嗎。
不然每次修改消費代碼的文件,都得換個消費隊列名稱,那得多麻煩啊
reload 就可以讓代碼生效嗎
我試過不行,其他邏輯reload生效了,不生效那個類怎么也都不生效,reload、restart、 kill -9都試過,最后都沒生效,開了8個消費隊列,總有些時候走的時候舊邏輯,最后開了1個消費隊列,居然直接走舊邏輯了,然后我改了隊列名稱,之后都新入隊的都是走新邏輯了,真的很奇怪,我就一臺機子,沒有其他機器在跑。講道理就算reload,restart無效,終極殺招 ps aux|grep -i workerman|awk '{print $2}'|xargs kill -9 也該殺完孤兒進(jìn)程了吧,實在想不通什么原因
怎么判斷走了老邏輯?
檢查下是不是誰的開發(fā)機連到隊列去了,消費了消息,有很多開發(fā)者犯了這個錯誤。
其實我也懷疑是有人的開發(fā)機連到了隊列去了。
邏輯判斷之所以確定是因為,新老邏輯都調(diào)用了第三方程序,第三方程序那邊有調(diào)用日志,新邏輯換了個服務(wù)商的,理論上新邏輯上了之后,老服務(wù)商就不會再收到請求了。但是之前的服務(wù)商還是收到調(diào)用請求,所有我就知道還有隊列再調(diào)用老的邏輯。后來換了隊列名稱,就再也沒有調(diào)用老的服務(wù)商那邊有接口調(diào)用日志了。
講道理,reload, restart, 甚至是kill -9都用了 ,沒道理不生效的。 最有可能的就是有其他人的環(huán)境連接了公司的redis了