我在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分钟触发一次此规则。。。
2条答案
按热度按时间envsm3lx1#
我不知道为什么,但这是我的解决办法:
oyjwcjzk2#
有同样的问题,只在我的eks kubernetes集群上,但在我的本地开发人员计算机上没有。我发现java库的默认keepalive间隔是600000毫秒或10分钟。这不是一些文档所声明的。
在我的集群上使用的nat有一个350秒的固定空闲超时。所以连接会断开。
我把它改成了一个较低的值(比如30000ms)。
目前看来,这是可行的。