我需要观看来自 mongodb 的最新文档。我使用了 ChangeStream watch API 从集合中获取流文档。
我拥有的设置是一个副本集,其中 3 个节点在同一系统中运行,端口为 27017、27018 和 27019。该设置没有任何身份验证设置。
mongodb.conf 文件:
systemLog:
destination: file
logAppend: true
path: /mongodb/logs/mongodb.log
storage:
dbPath: /mongodb/data/d1
journal:
enabled: true
engine: "wiredTiger"
wiredTiger:
engineConfig:
cacheSizeGB: 4
net:
port: 27017
bindIp: localhost
我已经对其中包含 72663 个文档的文件执行了批量插入。我从下面的程序中得到的每秒处理的记录只有 8073 条。
我必须观看的 Java 代码是。
List<ServerAddress> serverAddress = Arrays.asList(new ServerAddress("localhost", 27019),new ServerAddress("localhost", 27018), new ServerAddress("localhost", 27017));
MongoClientSettings settings = MongoClientSettings.builder()
.applyToClusterSettings(builder -> builder.hosts(serverAddress)).build();
MongoClient client = MongoClients.create(settings);
int count = 0;
Instant start = null;
MongoChangeStreamCursor<ChangeStreamDocument<Document>> dep = client.getDatabase("MyDB").getCollection("TestCollection").watch().cursor();
while (true) {
while (dep.hasNext()) {
if (count == 1) {
start = Instant.now();
}
count++;
ChangeStreamDocument<Document> next = dep.next();
if (count == 72663) {
Instant end = Instant.now();
Duration timeElapsed = Duration.between(start, end);
long seconds = timeElapsed.getSeconds();
long rec = count / seconds;
System.out.println("records processed per second " + rec);
}
}
有没有办法从更改流 API 中获得更好的性能。或者是否有任何其他 API 可以让我在观看文档时获得更好的性能。或任何其他可以提供更好性能的复制属性。