2014-10-03 61 views
0

我使用net.sf.xenqtt的0.9.6版将消息发送到ActiveMQ服务器。在启动时创建一个新的MqttClient:xenqtt:检测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是否处于“正在重新连接”状态 - 既不关闭也不完全打开的技术是什么?或者你会推荐我完全使用不同的mqtt客户端软件包?

回答

0

只要连接断开,就会调用MqttClientListener的disconnect方法。 “重新连接”参数告诉你客户端是否会尝试重新连接。您无法调用轮询当前连接状态的方法。

至于你关于改变客户的问题:我认为xenqtt是首选的MQTT库,但我是项目作者之一,所以我可能会有偏见。我们尽力及时回复票据,随时打开任何问题的票:http://sourceforge.net/p/xenqtt/tickets/

+0

非常感谢您确认轮询当前连接状态的方法不存在。 – 2014-10-13 16:51:39

相关问题