亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將消息發布到代理之后,MQTT客戶端未收到確認

將消息發布到代理之后,MQTT客戶端未收到確認

肥皂起泡泡 2021-04-11 16:37:11
我的問題是,當我想響應到達消息時,我沒有從經紀人那里獲得遞送令牌,但消息到達了經紀人。我可以在日志中看到它。所以我的問題是如何通過發布對收到的消息進行響應?這是我的方式,它不起作用...public void setMqttCallback() {        mqttClient.setCallback(new MqttCallback() {            @Override            public void connectionLost(final Throwable throwable) {                System.out.println("Lost connection to Broker because of: " + throwable.getMessage());            }            @Override            public void messageArrived(final String topic, final MqttMessage mqttMessage) throws Exception {                System.out.println("Received on " + topic + ": " + new String(mqttMessage.getPayload()));                topics = new Topics();                //Answer to arriving messages (Logic)                if (topic.equals(topics.getVehicleNavLandmarkInfo(Mqtt.VIN_ID))) {                    landmarks = new Landmarks();                    MqttMessage message = new MqttMessage(landmarks.getLandmarks().getBytes());                    message.setQos(2);                    System.out.println("Sending on " + topic + ": " + landmarks.getLandmarks());                                        mqttClient.publish(topics.getBackendNavLandsmarks(Mqtt.VIN_ID), message);                }                if (topic.equals(topics.getVehicleNavDestination(Mqtt.VIN_ID))) {                    routing = new Routing(49.0000, 8.0000, "A");                    MqttMessage message = new MqttMessage(routing.getShortestPath().getBytes());                    message.setQos(2);                    System.out.println("Sending on " + topic + ": " + routing.getShortestPath());                                        mqttClient.publish(topics.getBackendNavRoute(Mqtt.VIN_ID), message);                }            }            @Override            public void deliveryComplete(final IMqttDeliveryToken iMqttDeliveryToken) {                System.out.println("Delivered Message: " + iMqttDeliveryToken.toString());            }        });    }
查看完整描述

1 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

messageArrived方法正在阻止,因此您不能再嘗試使用相同的mqttClient連接來發布消息。您需要使用另一個與代理具有自己連接的線程。

如果是一次性的情況,那么您可以啟動一個新線程并執行其中的所有操作,但是如果您的應用程序將不斷地將消息發布到到達的消息中,那么最好啟動一個線程,連接到代理然后等待信息從messageArrived方法傳遞。


查看完整回答
反對 回復 2021-04-28
  • 1 回答
  • 0 關注
  • 532 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號