2016-04-05 8 views
2
static String[] meandgroup = new String[]{"timentask/c/u000000000005", "timentask/c/u0000000GRP85", "timentask/c/u000000GRP107", "timentask/c/u0000000GRP84", "timentask/c/u000000GRP100"}; 
    public static List<MqttClient> mqttConnect(Object topicId) { 
     try { 
      mqttClient = new ArrayList<MqttClient>(); 
      for (int i = 0; i < meandgroup.length; i++) { 
       //if (mqttClient.get(i) == null || !mqttClient.get(i).isConnected()){ 
       if (!globalData.GlobalDataSetGet.MQTT_SERVER_HOST_NAME.equals("") && !globalData.GlobalDataSetGet.MQTT_SERVER_USER_NAME.equals("")) { 
        String topicName = meandgroup[i]; 
        mqttClient.add(MqttMgr.subscriber(globalData.GlobalDataSetGet.MQTT_SERVER_HOST_NAME, 
          globalData.GlobalDataSetGet.MQTT_SERVER_PORT_NUMBER, globalData.GlobalDataSetGet.MQTT_SERVER_USER_NAME, 
          globalData.GlobalDataSetGet.MQTT_SERVER_USER_PASSWORD, Constants.MQTT_CONNECTION_KEEP_ALIVE_SECS, topicName, "client" + globalData.GlobalDataSetGet.getUserIdValue, new ChatPaneWrite())); 
       } 
      } 
     } catch (MqttException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return mqttClient; 
    } 
+0

あなたは何をしようとしているのか、何が動作していないのかを正確に説明する必要があります – hardillb

+1

JavaでPAHOを使用して複数のトピックと複数のMqttCallbackを購読する方法 –

+1

Amazon MQTTクラウドサーバにはn個のトピックがあります。ダイナミックな5トピックと私のコールバック。誰がこの5のトピックを公開していますか。 –

答えて

3

MQTTではトピックをワイルドカードでサブスクライブすることができます。つまり、すべてのトピックをactullyで購読する必要はありません。 "timentask/c/u000000000005", "timentask/c/u0000000GRP85" 代わりに、"timentask/c/#"あなたが各サブスクリプションのための新しいMQTTクライアントを作成しようとしているように見えます

+1

これを行うと、mqtt chat server !!!!!!からのすべての受信メッセージを公開しています。私のことを理解する?私はtimentask/c/a/u000000000005、timentask/c/b/u000000000005とtimentask/c/c/u000000000005これらの3つだけをtimentask/c/a/u000000000005にtimentask/c/a/ –

+1

Amazon MQTTクラウドサーバにはn個のトピックがあり、動的5トピックとコールバックの接続/購読を試しています。誰がこの5のトピックを公開していますか。 –

3

に加入し、これはおそらく、ほとんどのアプリケーションのための非常に不必要です。 1つのクライアントを使用したほうがいいかもしれませんし、トピック配列( subscribe(String[] topicFilters, int[] qos)のように)を使って購読してください。

mqttAsyncClient.subscribe(["/topic1", "/topic2", "/topic3"], [0,1,2]); 

任意のメッセージがあなたのMqttCallbackに配信されている場合は、メッセージがに出版されたという話題も提供されますので、あなたはまだメッセージがどこから来たのか伝えることができるとルートそれにできるようになりますそれに応じて。

+1

MqttException(0) - 接続が失われた(32109) - mqttconfig.MqttMgr.getMqttClientでjava.io.EOFException \t(MqttMgr.java:91)mqttconfig.MqttMgr.subscriberで \t(MqttMgr.java:35) \tでmqttconfig.MqttUtil.mqttConnect(MqttUtil.java:38) \t at LogIn $ 49 $ 4.doInBackground(LogIn.java:2003) \t LogIn $ 49 $ 4.doInBackground(LogIn.java:1999) –