我们使用mongo java驱动程序3.2.2和mongo oplog集合来标识我们的mongo集合中的更改(Mongo服务器版本为3.2)。我们遇到以下两个问题,并且几乎没有问题。如果你们中的任何一个人遇到了同样的问题,请帮助我们澄清它们。下面的问题尤其发生在oplog中繁重的写操作时。Mongo Oplog Tailable光标
代码:
MongoCursor<Document> tailableCursor = collection.find(query).sort(new Document("$natural", 1)).cursorType(CursorType.TailableAwait).noCursorTimeout(true).iterator();
com.mongodb.MongoExecutionTimeoutException:操作超出时间限制
一)将设置在处理异常越好MAXTIME帮助?考虑到我们正在使用可拖动的等待光标,maxTime有什么实际价值?下面的链接指出,对于游标,随后的“getmore”请求将包含在总时间中。 https://www.mongodb.com/blog/post/maxtimems-and-query-optimizer-introspection-in
b。)会使用非阻塞游标调用帮助? http://mongodb.github.io/mongo-java-driver/3.4/javadoc/com/mongodb/client/MongoCursor.html#tryNext--
c)如果出现上述异常,优雅地处理错误并继续处理后续记录的最佳方法是什么?
com.mongodb.MongoQueryException:查询find命令时,错误代码为96和错误信息“执行人的错误失败:CappedPositionLost:CollectionScan死于被删除
会增加OPLOG大小上限集合中的位置有助于解决这个问题?是否有其他可用的解决方案?