2015-02-10 4 views
1

Я загрузил пример на Java, чтобы продемонстрировать Paho MQTT.Paho MQTT throws Exception

public class Thermometer { 

    public static final String BROKER_URL = "tcp://test.mosquitto.org:1883"; 

    public static final String TOPIC = "xyz.abc"; 

    private MqttClient client; 


    public Thermometer() { 
     try { 
      MemoryPersistence per = new MemoryPersistence(); 
      String clientId = UUID.randomUUID().toString(); 
      client = new MqttClient(BROKER_URL, clientId, per); 
     } catch (MqttException e) { 
      e.printStackTrace(); 
      System.exit(1); 
     } 
    } 

Проблема возникает, когда я запускаю его, он находит в client = new MqttClient(BROKER_URL, clientId, per); с

Исключение в потоке "главный" java.lang.IllegalArgumentException в org.eclipse.paho.client.mqttv3.MqttClient. (MqttClient.java:170) на mqtt_pub.Thermometer. (Thermometer.java:26) в mqtt_pub.Thermometer.main (Thermometer.java:65)

Я обнаружил, что @ бросает IllegalArgumentException, если значение QoS не равно 0, 1 или 2, но в классе MemoryPersistence они не упомянуты. Пожалуйста, помогите, заблаговременно.

+0

Возможно, вы используете довольно старую версию библиотеки paho mqtt - так, какую версию вы используете? – nos

+0

Я использовал версию paho 1.0.1. но я прочитал его документацию в http://www.eclipse.org/paho/files/javadoc/index.html?org/eclipse/paho/client/mqttv3/IMqttClient.html, может быть, это mqttv3 – Bryan

ответ

0

Если вы посмотрите на source code из MttqClient, вы можете видеть, что uuid может иметь длину не более 23 символов. Похоже, UUID больше:

if (clientId == null || clientId.length() == 0 || clientId.length() > 23) 
{ 
     throw new IllegalArgumentException(); 
} 

UUID.randomUUID().toString() возвращает строку с длиной 36 полукокса;

+0

спасибо, это работает – Bryan

 Смежные вопросы

  • Нет связанных вопросов^_^