簡體   English   中英

Multi collectItems如何提前終止並返回收集的物品

[英]Multi collectItems how to early terminate and return the collected items

在我的 quarkus 服務中,我正在構建一個自定義累加器來使用Multi stream 可能是無限的,我想知道在積累了足夠的數據后如何提前終止並收集結果?

下面是我的原型:

Multi<Data> sortedStream = getStream();
return this.sortedStream.collectItems().in(
    LinkedList::new,
    new BiConsumer<LinkedList<Coverage>, Data>() {
        @Override
        public void accept(LinkedList<Coverage> coverages, Data incoming) {
        if (coverages.isEmpty()) {
            coverages.add(new Coverage(incoming));
            return;
        }

        if (enough(coverages)) {
            // Question: How to early terminate and collect coverage downstream?
        }

        Coverage last = coverages.getLast();
        if (worthAdd(last, incoming)) {
            coverages.add(new Coverage(incoming));
        } else {
            return;
        }

        }
    }
)

根據官方團隊( https://github.com/smallrye/smallrye-mutiny/issues/501 ), collect收集所有項目,直到一個終端事件。 我設法調整我的算法,想出一種方法來檢查上游的每個項目並使用multi.select().first API 提前終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM