aws java iot客户端每10分钟重新连接一次

uqcuzwp8  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(450)

我在java中使用iot sdk。当我的应用程序启动时,它连接到aws的物联网核心:

iotClient = new AWSIotMqttClient(. . .);            
iotClient.connect();

但应用程序启动后,我在日志中看到一个非常奇怪的行为,每10分钟发生一次:

[pool-8-thread-1] com.amazonaws.services.iot.client.core.AwsIotConnection.onConnectionSuccess Connection successfully established
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AbstractAwsIotClient.onConnectionSuccess Client connection active: <client ID>
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AwsIotConnection.onConnectionFailure Connection temporarily lost
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AbstractAwsIotClient.onConnectionFailure Client connection lost: <client ID>
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AwsIotConnection$1.run Connection is being retried
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AwsIotConnection.onConnectionSuccess Connection successfully established
[pool-8-thread-1] com.amazonaws.services.iot.client.core.AbstractAwsIotClient.onConnectionSuccess Client connection active: <client ID>

如何每10分钟禁用一次重新连接?我对已连接/已断开连接的主题使用物联网规则,因此每10分钟重新连接一次将每10分钟触发一次此规则。。。

envsm3lx

envsm3lx1#

我不知道为什么,但这是我的解决办法:

iotClient = new AWSIotMqttClient(. . .);    

iotClient.setKeepAliveInterval(0);

iotClient.connect();
oyjwcjzk

oyjwcjzk2#

有同样的问题,只在我的eks kubernetes集群上,但在我的本地开发人员计算机上没有。我发现java库的默认keepalive间隔是600000毫秒或10分钟。这不是一些文档所声明的。
在我的集群上使用的nat有一个350秒的固定空闲超时。所以连接会断开。
我把它改成了一个较低的值(比如30000ms)。

iotClient.setKeepAliveInterval(30000);

目前看来,这是可行的。

相关问题