首页 > 解决方案 > AWS IoT Java SDK - 消息发布后代理断开连接

问题描述

通过 Java SDK 与 IoT 代理端点建立了连接,我可以在 JVM 中看到 3 个相关线程:MQTT Rec:、MQTT Snd: 和 MQTT Call。当我使用 AWSIotMqttClient 调用 client.publish(...) 时,客户端立即断开与代理的连接,并显示以下日志消息:

2020 年 5 月 16 日上午 12:15:52 com.amazonaws.services.iot.client.core.AwsIotConnection onConnectionFailure 信息:连接暂时丢失

断开连接原因(由 Lambda 的存在更改事件捕获):CONNECTION_LOST

我在 init 方法中建立连接,如下所示:

public void init() {
  client = new AWSIotMqttClient(MQTT_CLIENT_ENDPOINT, MQTT_CLIENT_ID + new BigInteger(64, new SecureRandom()).toString(32), readStore(), KEYPASS);
  client.setPort(8883);

  try {
    client.connect(5000, false);

  } catch (AWSIotException e) {
    ...
  }
}

连接已成功建立。

我正在尝试以不同的方法发布(在另一个线程中作为 web 服务端点代码运行):

try {
  AWSIotMessage message = new AWSIotMessage(topic, AWSIotQos.QOS0, commandString);
  client.publish(message, 3000);
} catch (AWSIotException e) {
  ...
}

commandString发布到主题,但是 MQTT 连接会立即断开并重新连接。

以下是证书附带的政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

我要发布的主题:'topictest'

请指教。

标签: javaamazon-web-servicesmqttiotaws-iot

解决方案


推荐阅读