我在MongoDB上的Capped Collection上使用了一个tailable游标。 但是,当我试图关闭它。等待“hasNext()”的线程永远停滞不前。在例子中,我试图用光标检索集合的所有文档。 6秒后,另一个线程关闭光标。
MongoCursor<Document> cursor = mongocollection.find().cursorType(CursorType.TailableAwait)
.noCursorTimeout(true).iterator();
new Thread(() -> {
// Wait for 6 seconds
try {
Thread.sleep(6000);
} catch (Exception e) {
e.printStackTrace();
}
//Close the cursor
cursor.close();
}).start();
try {
while (cursor.hasNext()) {
Document doc = cursor.next();
// do what you want with doc
System.out.println(doc.toJson());
}
} catch (MongoCursorNotFoundException e) {
//OK, the cursor is closed
e.printStackTrace();
}
System.out.println("end");
我正在使用mongoDB java驱动程序3.4.2和mongoDB服务器3.4
我尝试使用CursorType.Tailable选项,但网络被以下请求淹没: 它可以工作,但网络充斥着这样的请求:
15:36:48.002 [Thread-366] DEBUG org.mongodb.driver.protocol.command - Sending command {getMore : BsonInt64{value=43120971156}} to database smartrail on connection [connectionId{localValue:7, serverValue:253}] to server item-89671:27012
15:36:48.002 [Thread-366] DEBUG org.mongodb.driver.protocol.command - Command execution completed