java客户端频繁和服务端断开连接,跟踪日志是一reason: chain_result,然后断开了

环境信息

  • EMQX 版本:5.0.4
  • 操作系统及版本:windows 10
  • 其他

问题描述

配置文件及日志

mqtt_usda.zip (74.7 KB)
spring:
mqtt:
broker: tcp://localhost:1883
clientId: mqtt_usda #客户端的id
username: emqx
password: public
timeout: 1000
KeepAlive: 1
topics: ServerId_02 #主题
qos: 0 #心跳包级别:

org.eclipse.paho org.eclipse.paho.client.mqttv3 1.2.5 io.netty netty-all 4.1.58.Final compile

{shutdown, takeover} 看起来是使用同一个 clientid 重复登录,老的连接被挤下去了。

我用MQTTX连接是不会出现这个报错,JAVA中怎样避免 clientid 重复登录,应该如何解决呢

合理分配 clientid 或在连接时随机生成

        client = new MqttClient(mqttConfiguration.getHost(), mqttConfiguration.getClientId(), new MemoryPersistence());

spring:
mqtt:
broker: tcp://localhost:1883
clientId: mqtt_usda #客户端的id
不能这样写死一个clientId吗

clientid 唯一是强制要求的,可以加一个随机函数。