第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

來(lái)自無(wú)限 Java 流的通量端點(diǎn)

來(lái)自無(wú)限 Java 流的通量端點(diǎn)

精慕HU 2022-05-12 15:08:31
我在處理由Stream.generate構(gòu)造構(gòu)建的通量時(shí)遇到問(wèn)題。Java 流正在從遠(yuǎn)程源獲取一些數(shù)據(jù),因此我實(shí)現(xiàn)了一個(gè)自定義供應(yīng)商,其中嵌入了數(shù)據(jù)獲取邏輯,然后使用它來(lái)填充流。Stream.generate(new SearchSupplier(...))我的想法是檢測(cè)一個(gè)空列表并使用takeWhile->的Java9特性Stream.generate(new SearchSupplier(this, queryBody))            .takeWhile(either -> either.isRight() && either.get().nonEmpty())(使用 Vavr 的 Either 構(gòu)造)然后,存儲(chǔ)庫(kù)層通量將執(zhí)行以下操作:return Flux.fromStream (            this.searchStream(...) //this is where the stream gets generated        )        .map(Either::get)        .flatMap(Flux::fromIterable);“服務(wù)”層由通量上的一些轉(zhuǎn)換步驟組成,但方法簽名類似于Flux<JsonObject> search(...).最后,控制器層有一個(gè)GetMapping:@GetMapping(produces = "application/stream+json")public Flux search(...) {    return searchService.search(...) //this is the Flux<JsonObject> parth         .subscriberContext(...) //stuff I need available during processing         .doOnComplete(() -> log.debug("DONE")); }我的問(wèn)題是 Flux 似乎永遠(yuǎn)不會(huì)終止。例如,從 Postman 打來(lái)的電話只是在響應(yīng)部分中拍攝了“正在加載...”部分。當(dāng)我從我的 IDE 中終止該過(guò)程時(shí),結(jié)果會(huì)被刷新到郵遞員,我看到了我所期待的。doOnComplete lambda 也永遠(yuǎn)不會(huì)被調(diào)用我注意到的是,如果我更改 Flux 的來(lái)源:Flux.fromArray(...) //harcoded array of lists of jsonsdoOnComplete lambda 被調(diào)用,http 連接也關(guān)閉,結(jié)果顯示在郵遞員中。知道可能是什么問(wèn)題嗎?
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用如下所示的代碼直接創(chuàng)建 Flux。請(qǐng)注意,我添加了一些假設(shè)的方法,您需要根據(jù)您的 SearchSupplier 的工作方式來(lái)實(shí)現(xiàn)這些方法:


Flux<SearchResultType> flux = Flux.generate(

            () -> new SearchSupplier(this, queryBody),

            (supplier, sink) -> {

                SearchResultType current = supplier.next();

                if (isNotLast(current)) {

                    sink.next(current);

                } else {

                    sink.complete();

                }

                return supplier;

            },

            supplier -> anyCleanupOperations(supplier)

        );


查看完整回答
反對(duì) 回復(fù) 2022-05-12
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)