3

一台机器已连接到 solace,我希望另一台机器连接,但它警告异常如下:

org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28)

org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:885)

org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118) java.lang.Thread.run(未知来源)

如果我断开一台机器,另一台机器可以连接。默认是否只能连接一台机器?如果是这样,如何设置它以便许多机器能够连接。

4

1 回答 1

3

您的应用程序的两个实例可能都在尝试使用相同的 clientId 进行连接。MQTT 协议要求每个客户端连接使用唯一的 clientId。

3.1.3.1 客户端标识符

客户端标识符 (ClientId) 向服务器标识客户端。每个连接到服务器的客户端都有一个唯一的 ClientId。客户端和服务器必须使用 ClientId 来识别它们持有的与客户端和服务器之间的此 MQTT 会话相关的状态 [MQTT-3.1.3-2]。

对于 Solace Systems 的实施,

  • ClientIds 最长可达 128 字节
  • ClientIds 可以包含第 1.5.3 节允许的任何 UTF-8 字符
于 2016-05-11T08:44:17.063 回答