无法使用 Eclipse Paho 客户端连接到 MQTT 代理
Cannot connect to MQTT broker with Eclipse Paho client
我可以使用 Python 绑定连接到我的 MQTT 代理,但我正在尝试使用 Java 重现同样的事情,看起来 SSH 握手成功,但是在发送 MQTT 连接之后消息没有回应。可能是什么原因?
我的代码:
package com.daniel.qa.common.services.mqtt;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.*;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.logging.*;
public class MqttTest {
public static void setDebugLevel(Level newLvl) {
Logger rootLogger = LogManager.getLogManager().getLogger("");
rootLogger.addHandler(new ConsoleHandler());
Handler[] handlers = rootLogger.getHandlers();
rootLogger.setLevel(newLvl);
for (Handler h : handlers) {
h.setLevel(newLvl);
}
}
public static void main(String[] args) {
setDebugLevel(Level.FINEST);
String topic = "MQTT Examples";
String content = "Message from MqttPublishSample";
int qos = 1;
String broker = "ssl://super-car.na.mqtt.daniel.com:8883";
MemoryPersistence persistence = new MemoryPersistence();
try {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509ExtendedTrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
}
}
};
// Install the all-trusting trust manager
System.setProperty("jdk.tls.client.protocols", "TLSv1");
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
MqttClient sampleClient = new MqttClient(broker, "pahoClientId", persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
connOpts.setSocketFactory(sc.getSocketFactory());
System.out.println("Connecting to broker: " + broker);
sampleClient.connect(connOpts);
System.out.println("Connected");
System.out.println("Publishing message: " + content);
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(qos);
sampleClient.publish(topic, message);
System.out.println("Message published");
sampleClient.disconnect();
System.out.println("Disconnected");
System.exit(0);
} catch (MqttException me) {
System.out.println("reason " + me.getReasonCode());
System.out.println("msg " + me.getMessage());
System.out.println("loc " + me.getLocalizedMessage());
System.out.println("cause " + me.getCause());
System.out.println("excep " + me);
me.printStackTrace();
} catch (NoSuchAlgorithmException | KeyManagementException e) {
e.printStackTrace();
}
}
}
最佳级别的日志:
Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient
MqttAsyncClient FINE: pahoClientId: ClientID=pahoClientId
ServerURI=ssl://super-car.na.mqtt.akamai.com:8883
PersistenceType=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence@4d49af10
Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient
MqttAsyncClient FINE: pahoClientId: ClientID=pahoClientId
ServerURI=ssl://super-car.na.mqtt.akamai.com:8883
PersistenceType=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence@4d49af10
Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore FINE:
pahoClientId: <> Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore FINE:
pahoClientId: <> Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientState FINER:
pahoClientId: Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientState FINER:
pahoClientId: Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientState restoreState FINE:
pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientState restoreState FINE:
pahoClientId: > Connecting to broker:
ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient connect FINE:
pahoClientId: cleanSession=true connectionTimeout=30 TimekeepAlive=60
userName=null password=[null] will=[null] userContext=null
callback=null Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient connect FINE:
pahoClientId: cleanSession=true connectionTimeout=30 TimekeepAlive=60
userName=null password=[null] will=[null] userContext=null
callback=null Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules
FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan
11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient
createNetworkModules FINE: pahoClientId:
URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModule
FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan
11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient
createNetworkModule FINE: pahoClientId:
URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules
FINE: pahoClientId: < Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules
FINE: pahoClientId: < Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms connect FINE:
pahoClientId: state=CONNECTING Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms connect FINE:
pahoClientId: state=CONNECTING Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore open FINE:
pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore open FINE:
pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms connectBG:run
FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForCompletion FINE:
pahoClientId: key=null wait max=-1 token=key=null ,topics=
,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159
,isComplete=false ,isNotified=false ,exception=null
,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e
Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms connectBG:run
FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForCompletion FINE:
pahoClientId: key=null wait max=-1 token=key=null ,topics=
,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159
,isComplete=false ,isNotified=false ,exception=null
,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e
Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
getOutstandingDelTokens FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE:
pahoClientId: >key=null timeout=-1 sent=false completed=false
hasException=false response=null token=key=null ,topics=
,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159
,isComplete=false ,isNotified=false ,exception=null
,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e
Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
getOutstandingDelTokens FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE:
pahoClientId: >key=null timeout=-1 sent=false completed=false
hasException=false response=null token=key=null ,topics=
,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159
,isComplete=false ,isNotified=false ,exception=null
,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e
Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token
waitForResponse FINE: pahoClientId: key=null wait max=-1 Jan 11, 2018
5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
saveToken FINE: pahoClientId: key=Con message=CONNECT clientId
pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE:
pahoClientId: key=null wait max=-1 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken
FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken
FINE: pahoClientId: key=Con
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
saveToken FINE: pahoClientId: key=Con
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:26 PM org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule
start FINE: pahoClientId: connect to host super-car.na.mqtt.akamai.com
port 8,883 timeout 0 Jan 11, 2018 5:16:26 PM
org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule start FINE:
pahoClientId: connect to host super-car.na.mqtt.akamai.com port 8,883
timeout 0 Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver start FINE:
pahoClientId: starting Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver start FINE:
pahoClientId: starting Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: network read message Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: network read message Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.ClientState get FINE:
pahoClientId: wait for 60,000 ms for new work or for space in the
inflight window Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.ClientState get FINE:
pahoClientId: wait for 60,000 ms for new work or for space in the
inflight window Jan 11, 2018 5:16:30 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms internalSend FINE:
pahoClientId: internalSend key=Con message=CONNECT clientId
pahoClientId keepAliveInterval 60
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:30 PM org.eclipse.paho.client.mqttv3.internal.ClientComms
internalSend FINE: pahoClientId: internalSend key=Con message=CONNECT
clientId pahoClientId keepAliveInterval 60
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run
FINE: pahoClientId: wait for workAvailable Jan 11, 2018 5:16:28 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE:
pahoClientId: wait for workAvailable Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState send FINE:
pahoClientId: pending send key=0 message CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState send FINE:
pahoClientId: pending send key=0 message CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken
FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken
FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken
FINE: pahoClientId: key=Con
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
saveToken FINE: pahoClientId: key=Con
token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018
5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run
FINE: pahoClientId: network send key=Con msg=CONNECT clientId
pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE:
pahoClientId: network send key=Con msg=CONNECT clientId pahoClientId
keepAliveInterval 60 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.wire.MqttOutputStream write
FINE: null: 500 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.wire.MqttOutputStream write
FINE: null: 500 Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState notifySent FINE:
pahoClientId: key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState notifySent FINE:
pahoClientId: key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifySent FINE:
pahoClientId: > key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifySent FINE:
pahoClientId: > key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState get FINE:
pahoClientId: wait for 60,000 ms for new work or for space in the
inflight window Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState get FINE:
pahoClientId: wait for 60,000 ms for new work or for space in the
inflight window Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: Stopping due to IOException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: Stopping due to IOException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection
FINE: pahoClientId: state=DISCONNECTING Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection
FINE: pahoClientId: state=DISCONNECTING Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE:
pahoClientId: stopping Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE:
pahoClientId: stopping Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE:
pahoClientId: notify workAvailable and wait for run Jan 11, 2018
5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop
FINE: pahoClientId: notify workAvailable and wait for run Jan 11, 2018
5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run
FINE: pahoClientId: notify spaceAvailable Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE:
pahoClientId: notify spaceAvailable Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE:
pahoClientId: stopping Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE:
pahoClientId: stopping Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore quiesce FINE:
pahoClientId: resp=Client is currently disconnecting (32102) Jan 11,
2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore quiesce FINE:
pahoClientId: resp=Client is currently disconnecting (32102) Jan 11,
2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms
handleOldTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms handleOldTokens
FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState resolveOldTokens
FINE: pahoClientId: reason Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState resolveOldTokens
FINE: pahoClientId: reason Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
getOutstandingTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore
getOutstandingTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore removeToken
FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore removeToken
FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState disconnected FINE:
pahoClientId: disconnected Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState disconnected FINE:
pahoClientId: disconnected Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState clearState FINE:
pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState clearState FINE:
pahoClientId: > Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore clear FINE:
pahoClientId: > 0 tokens Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsTokenStore clear FINE:
pahoClientId: > 0 tokens Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE:
pahoClientId: stopping sender Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE:
pahoClientId: stopping sender Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientState notifyQueueLock
FINE: pahoClientId: notifying queueLock holders Jan 11, 2018 5:16:31
PM org.eclipse.paho.client.mqttv3.internal.ClientState notifyQueueLock
FINE: pahoClientId: notifying queueLock holders Jan 11, 2018 5:16:31
PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE:
pahoClientId: no outstanding flows and not connected Jan 11, 2018
5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState get
FINE: pahoClientId: no outstanding flows and not connected Jan 11,
2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender
run FINE: pahoClientId: get message returned null, stopping} Jan 11,
2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender
run FINE: pahoClientId: get message returned null, stopping} Jan 11,
2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender
run FINE: pahoClientId: < Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE:
pahoClientId: < Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE:
pahoClientId: stopped Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection
FINE: pahoClientId: state=DISCONNECTED Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection
FINE: pahoClientId: state=DISCONNECTED Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback
handleActionComplete FINE: pahoClientId: callback and notify for
key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback
handleActionComplete FINE: pahoClientId: callback and notify for
key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE:
pahoClientId: >key=Con response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE:
pahoClientId: >key=Con response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback fireActionEvent
FINE: pahoClientId: call onSuccess key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsCallback fireActionEvent
FINE: pahoClientId: call onSuccess key=Con Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token markComplete FINE:
pahoClientId: >key=null response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token markComplete FINE:
pahoClientId: >key=null response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE:
pahoClientId: >key=null response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE:
pahoClientId: >key=null response=null excep=Connection lost (32109) -
java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: < Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE:
pahoClientId: < Disconnected from the target VM, address:
'127.0.0.1:53751', transport: 'socket' reason 32109 msg Connection
lost loc Connection lost cause java.io.EOFException excep Connection
lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM
org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE:
pahoClientId: failed with exception Connection lost (32109) -
java.io.EOFException at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138)
at java.lang.Thread.run(Thread.java:748) Caused by:
java.io.EOFException at
java.io.DataInputStream.readByte(DataInputStream.java:267) at
org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56)
at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100)
... 1 more
Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token
waitForResponse FINE: pahoClientId: failed with exception Connection
lost (32109) - java.io.EOFException at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138)
at java.lang.Thread.run(Thread.java:748) Caused by:
java.io.EOFException at
java.io.DataInputStream.readByte(DataInputStream.java:267) at
org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56)
at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100)
... 1 more
Connection lost (32109) - java.io.EOFException at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138)
at java.lang.Thread.run(Thread.java:748) Caused by:
java.io.EOFException at
java.io.DataInputStream.readByte(DataInputStream.java:267) at
org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56)
at
org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100)
... 1 more
Process finished with exit code 0
问题出在 MQTT 版本上 - 在第一个 Java 版本中我有旧库 - mqtt-client 0.4.0 - 它有 MQTT 3.1,代理不支持它所以它终止了 SSL 连接当注意到它。当我切换到更新的版本(org.eclipse.paho.client.mqttv3 1.0.2,使用 MQTT 3.1.1)时,连接成功。
我可以使用 Python 绑定连接到我的 MQTT 代理,但我正在尝试使用 Java 重现同样的事情,看起来 SSH 握手成功,但是在发送 MQTT 连接之后消息没有回应。可能是什么原因?
我的代码:
package com.daniel.qa.common.services.mqtt;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.*;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.logging.*;
public class MqttTest {
public static void setDebugLevel(Level newLvl) {
Logger rootLogger = LogManager.getLogManager().getLogger("");
rootLogger.addHandler(new ConsoleHandler());
Handler[] handlers = rootLogger.getHandlers();
rootLogger.setLevel(newLvl);
for (Handler h : handlers) {
h.setLevel(newLvl);
}
}
public static void main(String[] args) {
setDebugLevel(Level.FINEST);
String topic = "MQTT Examples";
String content = "Message from MqttPublishSample";
int qos = 1;
String broker = "ssl://super-car.na.mqtt.daniel.com:8883";
MemoryPersistence persistence = new MemoryPersistence();
try {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509ExtendedTrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, Socket socket) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s, SSLEngine sslEngine) throws CertificateException {
}
}
};
// Install the all-trusting trust manager
System.setProperty("jdk.tls.client.protocols", "TLSv1");
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
MqttClient sampleClient = new MqttClient(broker, "pahoClientId", persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
connOpts.setSocketFactory(sc.getSocketFactory());
System.out.println("Connecting to broker: " + broker);
sampleClient.connect(connOpts);
System.out.println("Connected");
System.out.println("Publishing message: " + content);
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(qos);
sampleClient.publish(topic, message);
System.out.println("Message published");
sampleClient.disconnect();
System.out.println("Disconnected");
System.exit(0);
} catch (MqttException me) {
System.out.println("reason " + me.getReasonCode());
System.out.println("msg " + me.getMessage());
System.out.println("loc " + me.getLocalizedMessage());
System.out.println("cause " + me.getCause());
System.out.println("excep " + me);
me.printStackTrace();
} catch (NoSuchAlgorithmException | KeyManagementException e) {
e.printStackTrace();
}
}
}
最佳级别的日志:
Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient MqttAsyncClient FINE: pahoClientId: ClientID=pahoClientId ServerURI=ssl://super-car.na.mqtt.akamai.com:8883 PersistenceType=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence@4d49af10 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient MqttAsyncClient FINE: pahoClientId: ClientID=pahoClientId ServerURI=ssl://super-car.na.mqtt.akamai.com:8883 PersistenceType=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence@4d49af10 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore FINE: pahoClientId: <> Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore FINE: pahoClientId: <> Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientState FINER: pahoClientId: Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientState FINER: pahoClientId: Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientState restoreState FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientState restoreState FINE: pahoClientId: > Connecting to broker: ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient connect FINE: pahoClientId: cleanSession=true connectionTimeout=30 TimekeepAlive=60 userName=null password=[null] will=[null] userContext=null callback=null Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient connect FINE: pahoClientId: cleanSession=true connectionTimeout=30 TimekeepAlive=60 userName=null password=[null] will=[null] userContext=null callback=null Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModule FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModule FINE: pahoClientId: URI=ssl://super-car.na.mqtt.akamai.com:8883 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules FINE: pahoClientId: < Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.MqttAsyncClient createNetworkModules FINE: pahoClientId: < Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientComms connect FINE: pahoClientId: state=CONNECTING Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientComms connect FINE: pahoClientId: state=CONNECTING Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore open FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore open FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientComms connectBG:run FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForCompletion FINE: pahoClientId: key=null wait max=-1 token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159 ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.ClientComms connectBG:run FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForCompletion FINE: pahoClientId: key=null wait max=-1 token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159 ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore getOutstandingDelTokens FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: >key=null timeout=-1 sent=false completed=false hasException=false response=null token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159 ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore getOutstandingDelTokens FINE: pahoClientId: > Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: >key=null timeout=-1 sent=false completed=false hasException=false response=null token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@5db45159 ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@6107227e Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: key=null wait max=-1 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: key=null wait max=-1 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule start FINE: pahoClientId: connect to host super-car.na.mqtt.akamai.com port 8,883 timeout 0 Jan 11, 2018 5:16:26 PM org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule start FINE: pahoClientId: connect to host super-car.na.mqtt.akamai.com port 8,883 timeout 0 Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver start FINE: pahoClientId: starting Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver start FINE: pahoClientId: starting Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: network read message Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: network read message Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: wait for 60,000 ms for new work or for space in the inflight window Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: wait for 60,000 ms for new work or for space in the inflight window Jan 11, 2018 5:16:30 PM org.eclipse.paho.client.mqttv3.internal.ClientComms internalSend FINE: pahoClientId: internalSend key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:30 PM org.eclipse.paho.client.mqttv3.internal.ClientComms internalSend FINE: pahoClientId: internalSend key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE: pahoClientId: wait for workAvailable Jan 11, 2018 5:16:28 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE: pahoClientId: wait for workAvailable Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState send FINE: pahoClientId: pending send key=0 message CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState send FINE: pahoClientId: pending send key=0 message CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con message=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore saveToken FINE: pahoClientId: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@767dab68 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: network send key=Con msg=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: network send key=Con msg=CONNECT clientId pahoClientId keepAliveInterval 60 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.wire.MqttOutputStream write FINE: null: 500 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.wire.MqttOutputStream write FINE: null: 500 Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState notifySent FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState notifySent FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifySent FINE: pahoClientId: > key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifySent FINE: pahoClientId: > key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: wait for 60,000 ms for new work or for space in the inflight window Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: wait for 60,000 ms for new work or for space in the inflight window Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: Stopping due to IOException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: Stopping due to IOException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection FINE: pahoClientId: state=DISCONNECTING Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection FINE: pahoClientId: state=DISCONNECTING Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: stopping Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: stopping Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: notify workAvailable and wait for run Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: notify workAvailable and wait for run Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE: pahoClientId: notify spaceAvailable Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback run FINE: pahoClientId: notify spaceAvailable Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE: pahoClientId: stopping Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE: pahoClientId: stopping Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore quiesce FINE: pahoClientId: resp=Client is currently disconnecting (32102) Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore quiesce FINE: pahoClientId: resp=Client is currently disconnecting (32102) Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms handleOldTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms handleOldTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState resolveOldTokens FINE: pahoClientId: reason Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState resolveOldTokens FINE: pahoClientId: reason Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore getOutstandingTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore getOutstandingTokens FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore removeToken FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore removeToken FINE: pahoClientId: key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState disconnected FINE: pahoClientId: disconnected Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState disconnected FINE: pahoClientId: disconnected Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState clearState FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState clearState FINE: pahoClientId: > Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore clear FINE: pahoClientId: > 0 tokens Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsTokenStore clear FINE: pahoClientId: > 0 tokens Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE: pahoClientId: stopping sender Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE: pahoClientId: stopping sender Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState notifyQueueLock FINE: pahoClientId: notifying queueLock holders Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState notifyQueueLock FINE: pahoClientId: notifying queueLock holders Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: no outstanding flows and not connected Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientState get FINE: pahoClientId: no outstanding flows and not connected Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: get message returned null, stopping} Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: get message returned null, stopping} Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: < Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender run FINE: pahoClientId: < Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsSender stop FINE: pahoClientId: stopped Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection FINE: pahoClientId: state=DISCONNECTED Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.ClientComms shutdownConnection FINE: pahoClientId: state=DISCONNECTED Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback handleActionComplete FINE: pahoClientId: callback and notify for key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback handleActionComplete FINE: pahoClientId: callback and notify for key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE: pahoClientId: >key=Con response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE: pahoClientId: >key=Con response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback fireActionEvent FINE: pahoClientId: call onSuccess key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsCallback fireActionEvent FINE: pahoClientId: call onSuccess key=Con Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token markComplete FINE: pahoClientId: >key=null response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token markComplete FINE: pahoClientId: >key=null response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE: pahoClientId: >key=null response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token notifyComplete FINE: pahoClientId: >key=null response=null excep=Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: < Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.CommsReceiver run FINE: pahoClientId: < Disconnected from the target VM, address: '127.0.0.1:53751', transport: 'socket' reason 32109 msg Connection lost loc Connection lost cause java.io.EOFException excep Connection lost (32109) - java.io.EOFException Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: failed with exception Connection lost (32109) - java.io.EOFException at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138) at java.lang.Thread.run(Thread.java:748) Caused by: java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:267) at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56) at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100) ... 1 more
Jan 11, 2018 5:16:31 PM org.eclipse.paho.client.mqttv3.internal.Token waitForResponse FINE: pahoClientId: failed with exception Connection lost (32109) - java.io.EOFException at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138) at java.lang.Thread.run(Thread.java:748) Caused by: java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:267) at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56) at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100) ... 1 more
Connection lost (32109) - java.io.EOFException at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138) at java.lang.Thread.run(Thread.java:748) Caused by: java.io.EOFException at java.io.DataInputStream.readByte(DataInputStream.java:267) at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56) at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100) ... 1 more
Process finished with exit code 0
问题出在 MQTT 版本上 - 在第一个 Java 版本中我有旧库 - mqtt-client 0.4.0 - 它有 MQTT 3.1,代理不支持它所以它终止了 SSL 连接当注意到它。当我切换到更新的版本(org.eclipse.paho.client.mqttv3 1.0.2,使用 MQTT 3.1.1)时,连接成功。