getAllGatewayAddresses return empty

567

程序运行工程中不定时出现 这个报错 businessWorker::getAllGatewayAddresses return empty
自己查了好多次没有找到原因
也看了论坛的相关的帖子 结果也是没找到正确的答案 现在怀疑是和Redis有关 但是我用的是 webman自带的
Redis
use support\Redis;

下面是部分代码

截图
截图
截图
截图

请大佬帮我看下
开发环境是 webman+gateway插件
以前用gatewayworkamn 好像没有遇到这样的问题

105 1 0
1个回答

walkor

gateway businessWorker启动后会连register服务,register会识别哪些时gateway进程的链接,然后将gateway进程信息发给businessworker。businessworker就知道有哪些gateway进程。getAllGatewayAddresses return empty 意思是busienssWorker没收到register的通知,不知道有哪些gateway进程。

所以围绕着这个流程可能原因有

  • gateway进程刚好重启中,整个流程还没完成,例如windows有代码更新自动重启过程
  • businessworker或者gateway进程由于某种原因(例如进程启动时加了什么阻塞业务)没有发起连接到register
  • gateway进程没启动
  • 由于某种原因register进程没有向businessWorker通知(例如进程启动时加了什么阻塞业务),没运行到通知逻辑
  • 其它围绕整个流程的可能原因

剩下要自己分析定位了,别人帮不上忙

  • 567 12天前

    好的 这么说就明白很多了 却是用更新代码自动重启的事情 我现在直接给重启下 看看以后是否还有这样的问题发生

  • 567 12天前

    大佬 我还想问下onWrokerStart 中使用定时器会阻塞吗?

  • walkor 12天前

    是否阻塞看定时器执行的内容是否是阻塞的

  • 567 12天前
    $uids = Gateway::getAllUidList();
        Cache::set('online', array_keys($uids));   这2行代码应该没有问题吧   获取在线设备 存入缓存  定时器是2秒执行一下
  • walkor 12天前

    没问题

🔝