簡體   English   中英

了解Spring Webflux /反應式端點

[英]Understanding Spring Webflux/Reactive endpoints

我試圖在Spring中理解反應式端點,這使我感到困惑。

// in a @RestController
@GetMapping("/someendpoint")
fun someEndpoint(): ResponseEntity<Mono<Map<String, Any>>> {
    return ResponseEntity(Mono.zip(
        Mono.fromRunnable<List<SomeItem>> { someApiCall() },
        Mono.fromRunnable<List<SomeOtherItem>> { someOtherApiCall() },
    ).map { tuple ->
        val someItems = tuple.t1
        val someOtherItems = tuple.t2
        mapOf(
            "someItems" to someItems,
            "someOtherItems" to someOtherItems
        )
    }, HttpStatus.OK)
}

我有一個返回Map的Mono的終結點,這個想法只是呈現一些任意的JSON。

作為請求的一部分,我執行一個Mono.zip(Mono.fromRunnable {...}),在其中調用API的數據。

壓縮后,我在結果上創建一個.map,最終返回我希望看到的Map。

當我命中端點時,不會呈現JSON,但是會調用zip中的runnable,並且響應時間將這些API調用考慮在內。 .zip之后的.map永遠不會被調用。 我可能只是在這里不理解一些簡單的東西-就像.map沒有訂閱?

這是怎么回事,使用Webflux / Reactor處理這種情況的常用方法是什么?

正如Rene在評論中提到的那樣,我的錯誤是使用Mono.fromRunnable {}而不是Mono.fromSupplier {}

暫無
暫無

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

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