MongoDB java驱动如何判断副本集是否处于自动故障转移过程中?

Wil*_*Bao 5 mongodb mongodb-java

我们的应用程序建立在 mongodb 副本集上。当副本集处于自动故障转移过程中时,我想捕获在时间范围内抛出的所有异常。我将使应用程序重试或等待故障转移完成。这样故障转移就不会影响用户。我在这里找到了描述 Java 驱动程序行为的文档: https //jira.mongodb.org/browse/DOCS-581

我编写了一个测试程序来查找所有可能的异常,它们都是 MongoException 但具有不同的消息:

  1. MongoException.Network:“对服务器 /10.11.0.121:27017 的读取操作在数据库测试中失败”
  2. MongoException:“找不到主人”
  3. MongoException:“不与主人交谈并重试已用完”
  4. MongoException:“[这里是副本集状态]中没有可用的副本集成员{“mode”:“primary”}”
  5. 也许更多...

我很困惑,不确定通过错误消息确定是否安全。此外,我不想捕获所有 MongoException。有什么建议吗?

谢谢

Ste*_*lon 0

我不知道 Java 驱动程序实现本身,但我会捕获所有MongoExceptions,然后根据getCode()情况过滤它们。如果错误代码不适用于副本集故障,那么我会重新抛出MongoException.

\n\n

问题是,据我所知,文档中没有错误代码参考。这里有一个存根存根,但这相当不完整。唯一的办法就是读Java驱动的代码,知道它用的是什么代码\xe2\x80\xa6

\n