首届 EMQX 「吐槽大会」——一起来吐槽 EMQX 吧!

好的

用Java写了个mqtt发送客户端端和一个mqtt接收客户端。如果是因为一定时间内没有消息收发导致的Mqtt连接断开,这时候重连是没有问题的,但是如果是客户端id冲突这种情况(通过MQTTX配置相同的客户端id来模拟),我这边在捕获到断开后触发重连,就会返回如下错误:


而且,如果MQTTX那边不断开连接,我这边重启程序也是连不上的。
请问是权限配置的问题吗?谢谢!

官方文档中,系统主题的 客户端上下线事件消息的payload的“connected_at”和“disconnected_at”字段的值是时间戳,和“ts”字段含义一致,会不会显得多余?


因为规则那边的终端连接成功/断开事件的“connected_at”和“disconnected_at”字段值是一个毫秒数值,分别代表了连接花费时间和断开花费时间,可能这才是你们设置这两个字段的本意把?但是上图中下线事件即包含了“disconnected_at”又包含了“connected_at”字段,看上去又有所意义(在客户端下线后把这次会话的上线时间和下线时间一起给出)。比较矛盾,希望知道EMQX这边最终会怎么定义,谢谢!
另外,还有个小问题,就是系统主题的 客户端上下线事件消息的payload中与官方文档中比较多了一个"protocol"字段,其值应该相当于"proto_name",会不会也是多余的字段?

  1. 不多余,ts 是指把这个事件转发出来时的事件戳(例如webhook开始转发这个事件时)connected_at 表示的是”已连接“这个事件发生的事件戳。这两者含义完全不一样的。例如如果系统中有 N 个组件需要关注 client.connected 这个事件,每个需要处理 1s,那么最后一个处理者的 ts 和 connected_at 之间就相差 N 秒了

  2. protocol 和 proto_name 可以只用其中一个就行了,确实没有必要俩个,不过从第一个版本就是这样,所以一直没动

感谢

https://askemq.com/t/topic/5146
一番研究后,总算实现了MQTT客户端重连机制,可以转到这个帖子 :smile:

业务服务通常会进行多实例部署, 它的consumer同时订阅相同主题,EMQX能对同一条消息进行幂等处理吗?(比如有一个UUID)

希望官方能加强下Exhook吧,感觉还是有不少的优化点的

  1. grpc客户端的退避重试,在更新server时,客户端没有重试存在消息丢失的风险
  2. 压缩支持
  3. proto字段增强,参考Exhook: add additional fields to the HookProvider · Issue #11048 · emqx/emqx · GitHub
1 个赞

创建了 issue [Feature] Exhook Function Suggestions · Issue #11161 · emqx/emqx · GitHub

1 个赞

期待5.0文档配置更新 + 1

请问你使用exhook接收发布消息吗?性能有遇到瓶颈吗?