[英]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.