我想为读取和写入配置不同的socketTimeout。如果写入速度慢但读取速度非常快,那就没关系,否则我希望它失败。 我知道我可以在MongoOptions中配置如下:
MongoOptions mongoOptions = new MongoOptions();
mongoOptions.connectionsPerHost = 20;
mongoOptions.threadsAllowedToBlockForConnectionMultiplier = 100;
mongoOptions.maxWaitTime = 1000;
mongoOptions.connectTimeout = 3000;
mongoOptions.socketTimeout = 3000;
mongo = new Mongo(parseServerAddresses("localhost:27017"), mongoOptions);
但在这种情况下,我必须创建两个mongo对象 - 一个用于读取,一个用于写入操作。
我只是在查询级别找不到这个配置,或者在集合级别找不到这个配置,而是拆分读写的定义。
提前致谢
答案 0 :(得分:-1)
我只是在查询级别找不到此配置。
在为特定查询设置此项时,Java驱动程序在find()
方法here上具有以下签名:
find(DBObject query, DBObject fields, int numToSkip, int batchSize, int options)
options
设置应允许您设置查询选项,例如特定查询的套接字超时。
上述方法已标记为已弃用,但您也可以设置options on a specific cursor。
我想为读取和写入配置不同的socketTimeout。如果写入速度很慢但读取速度非常快,那就没问题,否则我希望它失败。
请注意,读取可能会在套接字上产生多次读取。文档从服务器批量返回。因此,您可能会非常快速地获得前100个结果,但随后您可能会在接下来的100个结果中超时。
如果您的查询涉及大量文件,您应该知道这一点。