环境信息
- EMQX 版本:4.2.6
- 操作系统及版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
- 其他
问题描述
程序运行中出现 “无效客户机标识 (2)", 不是必现的
程序运行中出现 “无效客户机标识 (2)", 不是必现的
嗯嗯 这个是会出现的,一般是由于大量同时的并发下,在集群下 拿 clientid 的存在锁冲突的会发生的。
即,由于前一个连接还在创建中,后一个相同 clientid 的拿不到 clientid 锁而导致建立连接失败。
这是设计内的情况,不用担心的。
也就是说 不使用相同的客户端ID 就不会出现这个问题了。
现在我们是很多线程使用同一个客户端ID去建立链接,发布消息。
我们项目中出现了这种错误,但是没有捕获异常重试,导致一些消息没有发布成功。
您说的不用担心,是指的什么呢?
这属于客户端连接到 EMQX 失败,客户端需要增加重试机制的。对于重要的消息,在连接不存在的时候甚至要做缓存的。
另外,一定不要用多进程使用相同的 ClientID 来发布消息!!!