emqx采用的4.4的版本
系统 ubuntu
编写钩子函数后,开启exhook,能正常连接订阅:订阅延迟 5~10s是否为版本bug;
emqx采用的4.4的版本
系统 ubuntu
编写钩子函数后,开启exhook,能正常连接订阅:订阅延迟 5~10s是否为版本bug;
方便抓包观察下 emqx 的 exhook 访问你的 grpc 整个耗时是多少不
我们用的5.8.9版本,mqttx模拟连接,瞬间成功,到钩子触发间隔了60多秒。之后钩子调用我的grpc只用了2ms
这个更像是 ExHook 连接状态/挂载点问题,不是 gRPC 处理慢。你给的数据里 gRPC 处理 2ms,但触发固定在 60s 左右,这个节奏先怀疑 auto_reconnect(默认 60s)或挂载点不对。
看看:
确认 HookProvider 实际返回了你需要的钩子(例如 OnClientSubscribe / OnSessionSubscribed),不是只挂了其他事件。
看 ExHook 状态是否在断连重连:Dashboard → ExHook,或者日志里搜 exhook/OnProviderLoaded。
把 auto_reconnect 临时调小验证:
exhook.servers = [
{
name = "your_exhook"
enable = true
url = "http://<grpc-host>:<port>"
request_timeout = 5s
auto_reconnect = 3s
pool_size = 8
}
]
如果调小后“60s 才触发”现象同步缩短,基本就定位到连接重建周期了。
另外请补两段信息:
exhook.servers 完整配置(脱敏后)
HookProvider 里 OnProviderLoaded 返回的 hooks 列表
再加一组时间戳:客户端发 SUBSCRIBE 时间、EMQX 侧对应 hook 日志时间、你的 gRPC 服务收到请求时间。这样能精确卡在哪一段。