Mqtt paho 드라이버와 고민 중입니다 ...ACK가 MQTT의 게시 메시지에 해당한다고 어떻게 알 수 있습니까?
게시를 수신 할 때마다 IMqttDeliveryToken을 사용하여 서버에서 응답을받습니다.
실제 게시 메시지와 비교하려면 IMqttDeliveryToken에서 ID를 검색하기 위해 MqttMessage에 ID를 설정합니다 ...하지만 작동하지 않습니다 ... IMqttDeliveryToken.getMessageId()는 잘못된 ID와 QoS가 0이 아닌 IMqttDeliveryToken.getMessage() 후에 ID를 얻으려고하면 NPE를 반환합니다. 메시지가 전달 된
까지 전달되는 메시지가 반환됩니다
는 자바 독을 읽은 후, 나는 그것이 일반적인 행동입니다 읽어 보시기 바랍니다. 메시지가 전달되면 null이 리턴됩니다.
다른 질문으로 안내합니다. 브로커가 Acknowledgement를 보낸 후에 deliveryComplete() 메소드가 실제로 호출 되었습니까?
QoS의client.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable thrwbl) { }
@Override
public void messageArrived(String string, MqttMessage mm) throws Exception { }
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
try {
System.out.println("Message ID from getMessageId() method : " + token.getMessageId());
MqttMessage message = token.getMessage();
System.out.println("Message ID from getMessage() method : " + message.getId());
} catch (MqttException ex) {
System.out.println(ex);
} catch (Exception ex) {
System.out.println(ex);
}
}
});
MqttMessage message = new MqttMessage();
message.setId(76);
message.setPayload("pouet".getBytes());
message.setQos(0);
client.publish("TEST", message);
0 :
QoS의Message ID from getMessageId() method : 1
Message ID from getMessage() method : 76
1 : 여기
내 코드Message ID from getMessageId() method : 1
java.lang.NullPointerException
깨달음 주셔서 감사합니다. MqttCallback 대신 게시 함수의 매개 변수로 전달 된 IMqttActionCallback을 사용했습니다. – Phoste