0

特定のトピックで発行された MQTT メッセージを受信するにはどうすればよいですか? 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);

    }

}

KURA で DataService を使用して MQTT メッセージを受信できるようにするために見逃したものは何ですか? ありがとう。

4

1 に答える 1