当我尝试创建一个新的MqttClient时,我从mqtt代理获得以下异常.错误在这里---
Caused by: Persistence already in use (32200)
at org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence.open(MqttDefaultFilePersistence.java:108) [mqtt-client-0.4.0.jar:]
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:273) [mqtt-client-0.4.0.jar:]
at org.eclipse.paho.client.mqttv3.MqttClient.<init>(MqttClient.java:222) [mqtt-client-0.4.0.jar:]
at org.eclipse.paho.client.mqttv3.MqttClient.<init>(MqttClient.java:134) [mqtt-client-0.4.0.jar:]
at com.ericsson.asdp.virtualassist.notification.messaging.MQTTHandler.createClient(MQTTHandler.java:61) [classes:]
at com.ericsson.asdp.virtualassist.notification.messaging.MQTTMessagingService.receieve(MQTTMessagingService.java:52) [classes:]
... 44 more
Run Code Online (Sandbox Code Playgroud)
这是receive()我尝试连接到mqtt的java类方法的代码---
MqttClient subClient = null;
try {
subClient = mqttHandler.createClient(userId, brokerURL);
MQTTNotificationSubscriber notificationSub = new MQTTNotificationSubscriber(mqttHandler);
notificationSub.setUserId(userId);
subClient.setCallback(notificationSub);
mqttHandler.subscribe(subClient, userId);
// do something here
} catch (Exception e) {
logger.error("Error in receive " + e.getMessage());
throw new VirtualAssistServicesException(e.getMessage(), e);
} finally {
try {
mqttHandler.disconnect(subClient);
} catch (MqttException e) {
throw new VirtualAssistServicesException(e.getMessage(), e);
}
}
Run Code Online (Sandbox Code Playgroud)
这是MQTTHandler类createClient()方法---
MqttClient subClient = null;
try {
subClient = new MqttClient(brokerURL, clientId);
} catch (MqttException e) {
}
Run Code Online (Sandbox Code Playgroud)
当我第一次为userId创建客户端时,它可以工作.从第二次起,它失败并出现上述异常.我在clean-session=false这里用.
如果有人有任何想法,请告诉我.谢谢.
看起来两个客户端都试图使用相同的文件进行持久化.MqttDefaultFilePersistence.open()的
Javadocs 说
初始化持久性存储.如果此客户端ID存在持久存储,则打开它,否则创建一个新存储.如果持久性存储已经打开,那么只需返回.应用程序可以使用相同的客户端ID连接到许多不同的服务器,因此客户端ID与连接一起将唯一地标识所需的持久性存储.
抛出: MqttPersistenceException - 如果打开持久存储时出现问题.
我认为该文件已经打开,您必须clientId在代码中为每个Mqtt客户端使用不同的文件.
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |