HiveMQ Mqtt 客户端

HiveMQ Mqtt Client

我正在尝试连接到我们的本地 MQTT 代理。

我创建客户端:

Mqtt5AsyncClient client = Mqtt5Client.builder()
            .serverHost(connectionConfig.getIp())
            .serverPort(1883)
            .automaticReconnectWithDefaultConfig()
            .identifier(connectionConfig.getClientID())
            .addConnectedListener(context ->  isConnected = true)
            .addDisconnectedListener(context -> isConnected = false)
            .buildAsync();

后来我尝试打开连接:

private void openConnection()
    {
        logger.info("openConnection() start");
        client.connectWith()
                .simpleAuth()
                .username(connectionConfig.getUser())
                .password(connectionConfig.getPassword().getBytes())
                .applySimpleAuth()
                .send()
                .whenComplete((connAck, throwable) ->
                {
                    if (throwable != null)
                    {
                        logger.error("connect error");
                        logger.error("couldn't connect to broker={}", throwable);
                    } else
                    {
                        logger.info("mqtt client connected");
                        subscribe();
                    }

                });
        logger.info("openConnection() end");
    }

我正在等待 whenComplete 给我一些结果,但没有任何反应。在日志中我只得到这个:

13:00:53.375 [Thread-0] INFO  mqtt.MqttHiveClient - openConnection() start
13:00:55.582 [Thread-0] INFO  mqtt.MqttHiveClient - openConnection() end

我应该以某种不同的方式捕获异常吗?

即使我改变:

.serverHost(connectionConfig.getIp())

出了点问题:

.serverHost("asdž)

没有抛出任何东西。

我删除了以下行:

.automaticReconnectWithDefaultConfig()

我现在在尝试连接时抛出异常。看起来,如果您启用了 automaticReconnect,它会尝试重新连接而不抛出异常。

连接失败的原因是我使用的是 tcp://127.0.0.1 而不是 127.0.0.1。