eclipse paho java_如何使用Eclipse Paho在Java MQTT客户端上接收时发布消息
我正在嘗試使用
Eclipse Paho在Java中的MQTT客戶端上實現某些功能.目標是訂閱主題,并且當收到消息時,客戶端發送關于另一主題的另一消息.
這看起來很容易,但我有一個奇怪的問題,我無法解決.這是我的代碼:
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
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.MqttClient;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttOperations implements MqttCallback {
MqttClient sampleClient;
MqttConnectOptions connOpts;
public MqttOperations() {
}
public static void main(String[] args) throws InterruptedException {
new MqttOperations().launchMqttClient();
}
public void launchMqttClient() throws InterruptedException {
try {
MemoryPersistence persistence = new MemoryPersistence();
sampleClient = new MqttClient("tcp://broker.mqttdashboard.com:1883", "iamaclient", persistence);
connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
sampleClient.connect(connOpts);
sampleClient.subscribe("topic/example/ofmessage");
sampleClient.setCallback(this);
} 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();
}
}
@Override
public void connectionLost(Throwable cause) {
// TODO Auto-generated method stub
}
@Override
public void messageArrived(String topic, MqttMessage message) throws MqttException
{
System.out.println("Received: " + message.toString());
try{
System.out.println("Publishing message: i am the answer");
MqttMessage ans = new MqttMessage("i am the answer".getBytes());
ans.setQos(2);
sampleClient.publish("topic/example/ofanswer", ans);
System.out.println("Message published");
}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();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
}
}
問題是,這個程序只運行一次.收到消息后,將發送此消息的答案,但似乎消息“消息已發布”從未顯示在屏幕上,并且客戶端不會收到任何其他消息.
我有這樣的印象,即sampleClient.publish行(“topic / example / ofanswer”,ans);永遠不會完成它的執行.
有誰知道它是怎么來的,請問如何解決我的問題?
總結
以上是生活随笔為你收集整理的eclipse paho java_如何使用Eclipse Paho在Java MQTT客户端上接收时发布消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svg制作动态闪光文字
- 下一篇: 吉林大学计算机科学与技术学院校训,各大学