java取消mongodb中的异步FindTable
我在mongodb中有一个查询,返回了很多结果。我将FindTable封装成一个反应式FlowTable,并使用spring boot webflux对结果进行流式处理
当用户断开连接时,我在Flowable中收到cancel事件,但我没有找到停止mongo迭代的方法
我创建了如下所示的Flowable:
私有静态可流动到可流动(可查找游标){
return Flowable.create(emitter -> {
cursor
.forEach(new Block<Document>() {
@Override
public void apply(Document doc) {
log.debug("Next Block :" + doc.toJson());
emitter.onNext(doc);
}
} , new SingleResultCallback<Void>() {
@Override
public void onResult(Void result, Throwable t) {
log.debug("Completed");
emitter.onComplete();
}
});
}, BackpressureStrategy.BUFFER);
}
我这样创建查询:
public Flowable<SomeType> find(String value){
Bson filter = Filters.eq("key", value);
FindIterable<Document> iterable = collection.find(filter);
return toFlowable(iterable)
.map(doc -> adapter.convert(doc))
.doOnCancel(() -> {
log.info("Cancel Flowable");
**--> iterable.stop????**
});
我用的是“组织”。mongodb:mongodb驱动程序异步:3.6.3'
有没有办法停止mongo中的异步iterable
共 (0) 个答案