无法从 Flux / Mono 读取值

Posted

技术标签:

【中文标题】无法从 Flux / Mono 读取值【英文标题】:Unable to read values from Flux / Mono 【发布时间】:2018-05-05 03:35:42 【问题描述】:

我有一个简单的程序,它包含两个部分:一个 Spring 5 服务器,它有一个返回 Mono 的端点,以及一个读取值并打印它的客户端程序。

当我浏览到http://localhost:8080/rand 时,会返回一个双精度值。但是,当我使用客户端时,检索到的值始终为 null(响应状态为 200)。

我错过了什么?

文件 Main.java

@SpringBootApplication
@EnableWebFlux
public class Main 
    public static void main(String... args) 
        SpringApplication.run(Main.class);
    

文件 MyController.java

@RestController
public class MyController 
    @GetMapping("/rand")
    public Mono<Double> GetDouble() 
        return Mono.just(ThreadLocalRandom.current().nextDouble());
    

文件 MyClient.java

public class MyClient 
    public static void main(String... args) 
        WebClient client = WebClient.create("http://localhost:8080");

        Double value = client.get()
                .uri("/rand")
                .accept(MediaType.APPLICATION_JSON)
                .retrieve()
                .bodyToMono(Double.class)
                .block();
        System.out.println("value = " + value);
    

【问题讨论】:

创建了另一个问题,其中有一些关于相同的发现。 ***.com/questions/47420900/… 这两个问题都是关于同一个问题,本质上是重复的...... 【参考方案1】:

这是 Spring Framework 5.0.1 的一个已知问题,请参阅 SPR-16166 了解更多信息。

【讨论】:

以上是关于无法从 Flux / Mono 读取值的主要内容,如果未能解决你的问题,请参考以下文章

合并两个 Mono 并获得一个 Flux。然后从那个 Flux 中提取一个 Mono

C#/ Mono - 从控制台应用程序读取输出

从 Mono 的列表中创建 Flux 的正确方法

WebClient 停止从 Flux 读取时的异常

如何从返回 Mono 的 Stream 创建 Flux? [复制]

单线程 Flux 中的 Mono