xenqtt:检测mqttClient何时尝试重新连接

时间:2014-10-03 23:35:11

标签: java mqtt

我使用net.sf.xenqtt的0.9.6版本向ActiveMQ服务器发送消息。在启动时,我创建了一个新的MqttClient:

SyncMqttClient mqttClient = new SyncMqttClient(broker, syncListener, threadPoolSize, config);

并测试其连接:

ConnectReturnCode returnCode = mqttClient.connect(clientId, true, clientUserName, clientPassword);
if (returnCode != ConnectReturnCode.ACCEPTED) {
    // all OK

如果它连接的服务器关闭,mqttClient会尝试重新连接i.a.w.它的ReconnectionStrategy,并吐出日志消息,如:

ERROR xenqtt - Failed to connect MqttClientChannel[localAddress:N/A,remoteAddress:N/A]
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)
    at net.sf.xenqtt.message.AbstractMqttChannel.finishConnect(AbstractMqttChannel.java:193)
    at net.sf.xenqtt.message.ChannelManagerImpl.doConnect(ChannelManagerImpl.java:362)
    at net.sf.xenqtt.message.ChannelManagerImpl.doIO(ChannelManagerImpl.java:312)
    at net.sf.xenqtt.message.ChannelManagerImpl.access$000(ChannelManagerImpl.java:47)
    at net.sf.xenqtt.message.ChannelManagerImpl$1.run(ChannelManagerImpl.java:92)
    at java.lang.Thread.run(Thread.java:745)

我可以看到日志条目,但是mqttClient本身似乎没有办法告诉我它连接有困难。

确定xenqtt是否在" is-reconnecting"中的技术是什么?国家 - 既不关闭也不完全开放?或者你会建议我完全使用不同的mqtt客户端软件包吗?

1 个答案:

答案 0 :(得分:0)

每当连接断开时,都会调用MqttClientListener的disconnect方法。 “重新连接”参数告诉您客户端是否会尝试重新连接。没有方法可以调用当前连接状态进行轮询。

关于更改客户的问题:我认为xenqtt是首选的MQTT库,但我是项目作者之一,所以我可能有偏见。我们会尽快回复您的门票,因此可以随意打开一张票:http://sourceforge.net/p/xenqtt/tickets/