Java 获得;不跟主人说话,重试次数用完了”;DBCursor.hasNext()处出现异常

Java 获得;不跟主人说话,重试次数用完了”;DBCursor.hasNext()处出现异常,java,mongodb,Java,Mongodb,我在语句DBCursor.hasNext()处遇到“未与主机对话且重试次数已用完”异常 当我搜索时,得到了设置首选项的解决方案。但我还是明白了这个问题 我的代码如下: public void sampleTest() throws Exception { MongoClient client = new MongoClient("192.168.20.117", 27017); DB database = client.getDB("CLME2ECORE"); boolean

我在语句DBCursor.hasNext()处遇到“未与主机对话且重试次数已用完”异常

当我搜索时,得到了设置首选项的解决方案。但我还是明白了这个问题

我的代码如下:

public void sampleTest() throws Exception
    {   

MongoClient client = new MongoClient("192.168.20.117", 27017);

DB database = client.getDB("CLME2ECORE");

boolean auth = database.authenticate("tecnotree", ("tecnotree").toCharArray());


DBCollection collection = database.getCollection("RegistrationRequest");

collection.setReadPreference(ReadPreference.primary());

BasicDBObject andQuery = new BasicDBObject("serviceRequest.serviceRequestSubtype.masterCode","RETPOSTREG");
andQuery.append("serviceRequest.serviceRequestStatus.masterCode", "PYMTPEND");

BasicDBObject andFields = new BasicDBObject("serviceRequest.customer.profileDetails.basicDetails.customerCode",1);
andFields.append("_id", 0);

DBCursor dbCursor = collection.find(andQuery);
DBObject dbObject;

dbCursor.setReadPreference(ReadPreference.primary());

if(dbCursor.hasNext())
{
     dbObject = dbCursor.next();

     String value = dbObject.get("serviceRequest.customer.profileDetails.basicDetails.customerCode").toString();
}



client.close();
}

我使用maven依赖项作为

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>2.13.0</version>
</dependency>
<dependency>
 <groupId>org.mongodb</groupId>
 <artifactId>bson</artifactId>
 <version>2.13.0</version>
</dependency> 

org.mongodb
mongo java驱动程序
2.13.0
org.mongodb
布森
2.13.0

请帮助解决此问题。

执行这些更改,然后它就会工作

  • 在连接到mongodb时传递完整的副本集字符串,不要传递单个服务器IP

  • 将ReadPreference更改为PrimaryPreferred,而不是Primary only


  • 做这些改变,它就会工作

  • 在连接到mongodb时传递完整的副本集字符串,不要传递单个服务器IP

  • 将ReadPreference更改为PrimaryPreferred,而不是Primary only


  • 我遇到了和你完全相同的问题。我正在使用JavaSpring连接到从属mongo数据库。下面的代码应该会有所帮助

    @配置
    @PropertySource(“类路径:param.properties”)
    公共类MongoConfig{
    public@Bean MongoClientFactoryBean mongo(){
    MongoClientFactoryBean mongo=新的MongoClientFactoryBean();
    mongo.setHost(mongoAddress);
    mongo.setPort(mongoPort);
    MongoClientOptions mco=新建MongoClientOptions.Builder().readPreference(readPreference.secondaryPreferred()).build();
    mongo.SetMongoClientations(mco);
    返回mongo;
    }
    @值(${mongo.address}”)
    私服;
    @值(${mongo.port}”)
    私有整数mongoPort;
    
    }
    我遇到了与你完全相同的问题。我正在使用JavaSpring连接到从属mongo数据库。下面的代码应该会有所帮助

    @配置
    @PropertySource(“类路径:param.properties”)
    公共类MongoConfig{
    public@Bean MongoClientFactoryBean mongo(){
    MongoClientFactoryBean mongo=新的MongoClientFactoryBean();
    mongo.setHost(mongoAddress);
    mongo.setPort(mongoPort);
    MongoClientOptions mco=新建MongoClientOptions.Builder().readPreference(readPreference.secondaryPreferred()).build();
    mongo.SetMongoClientations(mco);
    返回mongo;
    }
    @值(${mongo.address}”)
    私服;
    @值(${mongo.port}”)
    私有整数mongoPort;
    
    }
    192.168.20.117是复制集的成员吗?如果是这样的话,您应该给MongoClient@hogan一个replicaSet成员数组作为参数,谢谢,它现在工作正常。192.168.20.117是replicaSet的成员吗?如果是这样的话,您应该给MongoClient@hogan一个replicaSet成员数组作为参数,感谢它现在工作正常。