EMQX5.6.1批量订阅接口返回404({"code":"CLIENTID_NOT_FOUND","message":"Client ID not found"})

2025-01-22 03:10:46.767 通过上线事件webhook调到了后端
2025-01-22 03:10:46.888 收到hook事件后,我们还通过/api/v5/clients/{clientId} 接口去二次校验连接状态,返回{
“connected_at”: “2025-01-22T03:10:46.745+00:00”,
“connected”: true
}
2025-01-22 03:10:47.042 我们调用/api/v5/clients/{clientId}/subscribe/bulk 接口对其进行topic订阅,此时返回 {“code”:“CLIENTID_NOT_FOUND”,“message”:“Client ID not found”}

这一秒的时间都没到,而且我们的keepalive设置为了 40s,什么原因会导致这个现象?还是说这是个bug?而且我看了上下线的hook,下一次切换状态都是在几分钟后了,并且这个时间点这个连接还有往其它的topic里面发消息

一般你调用/api/v5/clients/{clientId} 是正常的。那调用下面一个也不应该有问题。
但是还是想问一句,你的 clientid 有什么特殊的么,需要做 url encode。

没有,就是一个32位的uuid

那可以发一下 emqx 的日志来看看

如果您用的集群的话,请求的 http api 的节点和 clientid 在的节点不是同一个节点,就有 bug。这个 bug 在 5.7.2 上已经修复了。

用的就是集群,那有什么别的解决方案可以处理掉这个问题吗?在不升级的情况下?

我用单个的订阅可以不?不走批量的接口,会出现这个问题吗?

这个没问题。

顺便问一下 /api/v5/clients/{clientId}/unsubscribe/bulk 会有类似的问题吗?

都有