java - 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'
请指教。
解决方案
推荐阅读
- c# - C# 通过 WinSCP/SSH 隧道从 Windows 上传文件
- java - 为什么每次建模时间我在 Weka 收到的拍摄时间都不一样?
- c# - C#中将多个不同类型的变量设置为null进行内存管理
- android - 用于更新通知的秒表服务
- shell - 使用 shell 脚本(curl hidden rest api)以编程方式获取应用程序 ID
- mysql - MYSQL 过程中的游标问题
- mysql - 如何跨列比较逗号分隔值
- c++ - boost::beast websocket异步读写连接丢失
- redis - Redis:永久丢失键
- django - 如何在 admin.py 中访问当前用户