请提供有关使用Java中的IMqttAsyncClient进行连接管理和重试的建议
我看到连接选项包括自动重新连接,只有在建立初始连接后,自动重新连接才起作用。
我没有看到有关IMqttAsyncClient行为的明确文档,因为初始连接失败。我是否需要在代码中包含用于初始连接的重试逻辑?
到目前为止,看来我尝试按预期进行连接时会触发失败回调。但是那我该怎么办呢?我需要自己编写一些重试逻辑吗?在更高版本的自动重新连接方案中,将重试。乍一看来,一旦初始连接失败,就是这样。
我已在失败回调中编写了重试代码
// my original connection method, re-used below from failure
... connect(... params ...) {
attempt connection using MqttAsyncClient.connect()
}
// callback
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
// log failure here
// User Context lets me know what we're trying to do
if ( "connecting".equals(asyncActionToken.getUserContext())
&& ( ! myShutdownRequested ) ) {
// log retrying and sleep a bit here
connect(); // calling original connect method again
}
}
明确的问题
我在任何一点上都没有找到明确的文档,“我尝试过”没有涵盖第2点。如果存在微妙的比赛条件,任何问题都可能不会立即出现。到目前为止,它似乎运行良好...