MongoDB java驱动程序如何确定副本集是否处于自动故障转移的过程中?

我们的应用程序基于
mongodb副本集.

我希望捕获副本集处于自动故障转移过程中的时间范围内抛出的所有异常.

我将使应用程序重试或等待故障转移完成.

这样故障转移不会影响用户.

我在这里找到了描述
java驱动程序行为的文档:
https://jira.mongodb.org/browse/DOCS-581

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

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

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

谢谢

最佳答案 当Mongo故障转移时,没有处于PRIMARY状态的节点.您可以通过
replSetGetStatus命令获取副本集状态,并查找主节点.如果找不到,则可以假定群集处于故障转移过渡状态,并且可以根据需要重试,检查每个失败连接上的副本集状态.

点赞