2016-07-27 42 views
0

私はmqttを使い慣れています。はじめに私は、mosquittoブローカーへのパブリッシュと購読を試みました。私はメッセージを公開することができました。しかし、私のサブスクライバはトピックを聞いていない、それはメッセージの待機/ポーリングなしに開始し、停止します。ここでpaho mqtt javaを購読することができません。

public class MqttSubscriber implements MqttCallback { 
private static final String TOPIC = "iot/endpoint"; 

public static void main(String[] args) { 
    new MqttSubscriber().listen(); 
} 

public void listen() { 
    MqttClient client = null; 
    try { 
     client = MqttClientGenerator.generateSubscriberClient(); 
     client.connect(); 
     System.out.println("Fetching messages..."); 
     client.subscribe(TOPIC); 
     client.setCallback(this); 
     client.disconnect(); 
     } catch (MqttException e) { 
     e.printStackTrace(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public void connectionLost(Throwable t) { 
    t.printStackTrace(); 
} 

public void deliveryComplete(IMqttDeliveryToken arg0) { 

} 

public void messageArrived(String topic, MqttMessage message) throws Exception { 
    System.out.println("Message received from broker..."); 
    System.out.println("Received Message: -- "); 
    System.out.println(message.getPayload().toString()); 
} 
} 

MqttClientGenerator、加入者コードです:

public class MqttClientGenerator { 
private static final String BROKER_URI = "tcp://localhost:1883"; 
private static final String CLIENT_ID = "pub"; 
private static final String SUBSCRIBER_ID = "sub"; 


private MqttClientGenerator() {} 

public static MqttClient generatePublisherClient() throws MqttException{ 
    //adding timestamp to make client name unique every time 
    return new MqttClient(BROKER_URI, CLIENT_ID+new Date().getTime()); 
} 

public static MqttClient generateSubscriberClient() throws MqttException{ 
    //adding timestamp to make client name unique every time 
    return new MqttClient(BROKER_URI, SUBSCRIBER_ID+new Date().getTime()); 
} 
} 

私はここで何をしないのですか?

+0

あなたのコードは正しいようですが、実際にはクライアント側で切断メソッドを呼び出していて、この行を削除してみてください。 –

+0

魅力的な動作:-)。加入者の中のクライアントを切断することは、ターミネーターの一部としてブロックから移動しなければならなかったのです。 –

+0

助けてくれてうれしい;)私はそれをもっと明確にする答えとしてこれを作った –

答えて

0

クライアントを切断する行を削除してみてください。

関連する問題