mongodb副本设置成员网络不可达时无限等待

问题描述

我构建了一个地理冗余的副本集mongodb服务(每个站点3个站点,每个站点3个成员),并使用Java驱动程序(异步v3.6.4)来操作mongo。一切正常,直到一个站点网络接口关闭,整个应用程序开始等待与该站点的连接重新启用。

我试图通过cli删除无法访问的主机,然后重新启动Web应用程序以使Web应用程序正常工作。我的问题是,为什么mongo java驱动程序无法自动重新连接到其他站点的mongo主机,所以工作正常?我是否需要将任何参数传递给ClusterSettings,ConnectionPoolSettings或SocketSettings来启用au-reconnect到正常运行的主机?

我的代码如下:

        ClusterSettings clusterSettings
                = ClusterSettings.builder().hosts(servers).build();
        ConnectionPoolSettings connectionSettings
                = ConnectionPoolSettings.builder()
                .maxSize(512)
                .minSize(64)
                .maxWaitQueueSize(512).build();
        MongoClientSettings settings = MongoClientSettings.builder()
                .clusterSettings(clusterSettings)
                .connectionPoolSettings(connectionSettings)
                .writeConcern(WriteConcern.JOURNALED)
                .readPreference(ReadPreference.secondaryPreferred())
                .readConcern(ReadConcern.LOCAL)
                .build();
        mongoClient = MongoClients.create(settings);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)