0
如何接收發布在特定主題上的MQTT消息? 我可以在MQTT代理上發佈消息,但我不知道如何接收消息?KURA:如何使用DataService接收MQTT消息?
這裏是我的組件的xml:
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="arduinoCommunicator">
<implementation class="arduinoCommunicator.ArduinoCommunicator"/>
<reference bind="setDataService" cardinality="1..1" interface="org.eclipse.kura.data.DataService" name="DataService" policy="static" unbind="unsetDataService"/>
<service>
<provide interface="org.eclipse.kura.data.DataServiceListener"/>
</service>
</scr:component>
這裏是我的包激活器類,我只保留了所需的代碼,我實現了DataServiceListener,我訂閱的onConnectionEstablished(話題),我想象我onMessageArrived在功能上的消息,問題是我沒有看到,認購已經取得並且不執行onMessageArrived()的函數日誌:
public class ArduinoCommunicator implements DataServiceListener {
public static DataService dataService;
@Override
public void onConnectionEstablished() {
String topic="egmkey/device2/cmd/PING";
System.out.println("connection has been established");
try {
ArduinoCommunicator.dataService.subscribe(topic, 1);//egmkey/device2/cmd/PING
System.out.println("subscription done to topic"+topic);
} catch (KuraException e) {
System.out.println("failed to subscribe: "+ e);
}
}
@Override
public void onMessageArrived(String topic, byte[] payload, int qos, boolean retained) {
System.out.println("message received!!!!!!!!!!!!!!!!!!!!!!:"+topic);
}
}
什麼我錯過了能夠使用DataS接收MQTT消息在KURA上的服務?謝謝。