有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案