AWS IoT 客户端:MqttException:连接意外关闭

时间:2021-06-02 21:40:02

标签: java aws-iot aws-iot-core

我在尝试使用新的 JITP 设备证书连接到 AWS IoT Core 时遇到以下异常:

<块引用>

software.amazon.awssdk.crt.mqtt.MqttException:连接意外关闭。

我已经以编程方式实现了与官方教程 (https://aws.amazon.com/premiumsupport/knowledge-center/aws-iot-core-jitp-setup/) 等效的 AWS IoT JITP

供应部分工作正常,我在其中生成设备证书。 然后,AWS 教程指出您需要对 AWS IoT 进行“虚拟”发布调用以启动新 IoT 事物的注册过程。此启动由运行触发:

mosquitto_pub --cafile awsRootCA.pem --cert deviceCertAndCACert.crt --key deviceCert.key -h a27icbrpsxxx-ats.iot.us-east-2.amazonaws.com -p 8883 -q 1 -t  foo/bar -i  anyclientID --tls-version tlsv1.2 -m "Hello" -d

如果我在生成设备证书之后和第一次尝试连接之前手动运行上面的 mosquitto_pub 命令,则连接成功。

我想知道是否有一种方法可以使用 AWS IoT Device SDK for Java 来执行此 'mosquitto_pub' 命令的等效操作,换句话说:在 AWS IoT Core 中启动注册过程。

这是我用来尝试连接的代码(请注意,如果我先运行 mosquitto_pub 命令,它会起作用):

    try(EventLoopGroup eventLoopGroup = new EventLoopGroup(1);
        HostResolver resolver = new HostResolver(eventLoopGroup);
        ClientBootstrap clientBootstrap = new ClientBootstrap(eventLoopGroup, resolver);
        AwsIotMqttConnectionBuilder builder = AwsIotMqttConnectionBuilder.newMtlsBuilderFromPath(CERT_PATH, KEY_PATH)) {

        builder.withCertificateAuthorityFromPath(null, AWS_ROOT_CA_PATH)
                .withEndpoint(CLIENT_ENDPOINT)
                .withClientId(THING_NAME)
                .withBootstrap(clientBootstrap)
                .withConnectionEventCallbacks(callbacks);

        try (MqttClientConnection connection = builder.build()) {
            CompletableFuture<Boolean> connected = connection.connect();
            try {
                boolean sessionPresent = connected.get();
                System.out.println("Connected to " + (!sessionPresent ? "new" : "existing") + " session!");
            } catch (Exception ex) {
                throw new RuntimeException("Exception occurred during connect", ex);
            }

0 个答案:

没有答案
相关问题