【问题标题】:MongoDB Java driver: autoConnectRetryMongoDB Java 驱动程序:autoConnectRetry
【发布时间】:2014-04-25 14:00:58
【问题描述】:

我们当前的连接配置如下所示:

MongoClientOptions.builder()
    .autoConnectRetry(true).maxAutoConnectRetryTime(1200000)
    .socketTimeout(30000).connectTimeout(15000).build();
     // SocketTimeout: 30s, ConnectionTimeout 15s, ReconnectRetry: 20min

autoConnectRetrymaxAutoConnectRetryTime 在当前版本 (source code) 中已弃用并将被删除:“此方法无法替代。使用 connectTimeout 属性控制连接超时。”

我认为重试和连接超时是两件事。有谁知道为什么会发生这种变化以及这有什么(内部)影响?

【问题讨论】:

  • 大概,他们认为重试失败的连接的价值有限。
  • 我们遇到了一些轻微的网络故障,如果没有它,连接就会停止,如果按照示例进行配置,则会被拾取
  • 嗯..这很有趣。不幸的是,您现在似乎必须在自己的项目中设置连接重试。祝你好运!

标签: java mongodb mongodb-java


【解决方案1】:

关于 autoConnectRetry 的含义有很多混淆。大多数人认为这意味着,如果由于 IOException 导致操作失败,驱动程序将重试操作,直到 maxAutoConnectRetryTime 结束。但事实并非如此。

这意味着,在调用 Socket.connect() 时,驱动程序会重试失败的连接尝试,直到 maxAutoConnectRetryTime 结束。但这正是 connectTimeout 的用途。 autoConnectRetry 的唯一附加功能是,您可以指定比底层操作系统所允许的更长的连接超时时间(通常强制执行最大连接超时时间,以限制用户指定的值)。

由于这种混乱、该功能缺乏价值以及其他 MongoDB 驱动程序都不支持该功能这一事实,我们决定弃用它(并在下一个主要版本中将其删除)。

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 2016-12-07
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多