I get the following exception from the mqtt broker when I try to create a new MqttClient. The error here is ---
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
Here is the code of my java class receive() method from which I am trying to connect to mqtt ---
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); } }
And here is the class method of MQTTHandler createClient() ---
MqttClient subClient = null; try { subClient = new MqttClient(brokerURL, clientId); } catch (MqttException e) { }
When I first create a client for userId, it works. From the second time he does not cope with the above exception. I use clean-session=false here.
If anyone has any ideas please let me know. Thanks.
java mqtt
chakrar
source share