Как подключить и опубликовать sh Java Hive MQTTClient с флеспи? - PullRequest
1 голос
/ 10 февраля 2020

flespi.io использует токен авторизации в качестве имени пользователя, вы также можете установить токен в качестве пароля, если хотите. Как подключиться к флеспи с помощью реализации HiveMQ Java?

Mqtt3AsyncClient client = MqttClient.builder()
                .useMqttVersion3()
                .identifier(UUID.randomUUID().toString())
                .simpleAuth()
                .username(mqttClientConfig.getUser())
                .password(mqttClientConfig.getPassword().getBytes()).applySimpleAuth()
                .serverHost(mqttClientConfig.getBrokerHost())
                .serverPort(mqttClientConfig.getBrokerPort())
                .buildAsync();
client.connect()
                .whenComplete((connAck, throwable) -> {
                    if (throwable != null) {
                        logger.error("MQTT connection error: ", throwable);
                    } else {
                        client.publishWith()
                                .topic(mqttClientConfig.getPublishTopic())
                                .payload(payload.getBytes())
                                .qos(MqttQos.fromCode(mqttClientConfig.getQos()))
                                .send()
                                .whenComplete((mqtt3Publish, subThrowable) -> {
                                    if (subThrowable != null) {
                                        logger.error("MQTT subscripton error: ", subThrowable);
                                    } else {
                                        logger.info("Published on: {}", mqttClientConfig.getTopic());
                                    }
                                });
                        client.disconnect();
                    }
                });

Я получаю сообщение об ошибке:

INFO  n.k.s.mqtt.HiveMqttClient - Connecting to mqtt.flespi.io:8883... 
ERROR n.k.s.mqtt.HiveMqttClient - MQTT connection error:  
com.hivemq.client.mqtt.exceptions.ConnectionClosedException: Server closed connection without DISCONNECT.

1 Ответ

2 голосов
/ 10 февраля 2020

Порт 8883 обычно предназначен для MQTT через TLS

Если это так, то вам нужно добавить что-то вроде следующего в сборщик

.sslWithDefaultConfig()

См. Учебное руководство по HiveMQ здесь

...