【发布时间】:2020-05-23 10:40:46
【问题描述】:
我遇到过 mongodb 响应式流驱动程序,它们似乎非常适合异步操作。此外,对于我们执行的每个操作,我们都需要为此指定一个订阅者。我的疑问是我们是否应该为我们所做的每个操作创建一个不同的订阅者实例。例如,考虑一下来自 mongodb docs 的 sn-p
// 1. Ordered bulk operation - order is guaranteed
subscriber = new PrintSubscriber<BulkWriteResult>("Bulk write results: %s");
collection.bulkWrite(
Arrays.asList(new InsertOneModel<>(new Document("_id", 4)),
new InsertOneModel<>(new Document("_id", 5)),
new InsertOneModel<>(new Document("_id", 6)),
new UpdateOneModel<>(new Document("_id", 1),
new Document("$set", new Document("x", 2))),
new DeleteOneModel<>(new Document("_id", 2)),
new ReplaceOneModel<>(new Document("_id", 3),
new Document("_id", 3).append("x", 4)))
).subscribe(subscriber);
subscriber.await();
在这里,它只做一些批量写入操作。如果我在这样的循环中为批处理执行这些操作
while(someresultset.hasNext()) {
list.add(someresultset.getNext())
if(list.size() >= 10000)
doWrites() // can I use same subscriber instance declared outside of this loop or I should create the subscriber instance every time?
list = new list()
}
【问题讨论】:
标签: java mongodb mongodb-query reactive-programming reactive-streams