如何使用心跳?

时间:2014-07-15 17:16:44

标签: java mongodb mongodb-java

Mongodb java驱动程序最近在MongoClientOptions.Builder类中添加了(在版本2.12中)以下方法:

  • heartbeatConnectRetryFrequency(int heartbeatConnectRetryFrequency)
  • heartbeatConnectTimeout(int heartbeatConnectTimeout)
  • heartbeatFrequency(int heartbeatFrequency)
  • heartbeatThreadCount(int heartbeatThreadCount)

根据this错误,看起来这些方法公开了MongoDB Java驱动程序将尝试重新生成连接池的属性,以防驱动程序连接池中的连接由于网络中断或mongodb而死亡服务器重启。

我已经阅读了相关的javadocs并在网上搜索过,但找不到任何详细的示例或说明如何使用它们的好文章。

有没有人知道如何使用这些属性?

1 个答案:

答案 0 :(得分:1)

这些字段的描述在MongoClientOptions的javadoc中给出,如下所示:

  • heartbeatConnectRetryFrequency(int heartbeatConnectRetryFrequency)
    • 当服务器当前无法访问时,这是后台线程将尝试连接到MongoClient连接到的每个MongoDB服务器的频率。
  • heartbeatConnectTimeout(int heartbeatConnectTimeout)
    • 这是后台线程使用的套接字连接超时,后台线程监视MongoClient连接到的每个MongoDB服务器。
  • heartbeatFrequency(int heartbeatFrequency)
    • 这是后台线程将尝试连接到MongoClient连接到的每个MongoDB服务器的频率。
  • heartbeatThreadCount(int heartbeatThreadCount)
    • 这是用于监视MongoClient连接到的MongoDB服务器的线程数。

我做了一些观察

  • 这些方法成为v2.12.2中mongodb java驱动程序api的一部分。
  • 根据我的测试代码,
    • pre v2.12.2,mongodb-java-driver无法从mongodb-server restarts恢复
    • 在v2.12.2中,服务器重启后的第一次调用失败并且所有后续调用都通过(即,mongodb-java-driver从服务器重启恢复,但this bug
    • 上面提到的错误已在v2.12.3中修复,自编写此答案之日起尚未发布。