【问题标题】:Why can't subscribe the request in reactor-netty?为什么无法在 reactor-netty 中订阅请求?
【发布时间】:2020-12-09 19:03:01
【问题描述】:

我只想访问 reactor-netty 项目中的 Http 内容。但结果是null

代码如下。

DisposableServer server =
            HttpServer.create()
                    .host("localhost")
                    .port(8000)
                    .route(routes ->
                                    .post("/echo",
                                            (request, response) -> 
                                                {   request.receive()
                                                        .retain()
                                                        .aggregate()
                                                        .asString()
                                                        .subscribe(System.out::println);
                                                    return response.sendString(Mono.just("hello"));})          
                    .bindNow();

我无法在控制台中获得结果。

我可以像在代码中那样访问请求吗? 任何人都可以帮忙吗?谢谢。

【问题讨论】:

    标签: reactor reactor-netty


    【解决方案1】:

    您在收到请求数据之前返回响应,因此 Reactor Netty 将丢弃在响应发送后收到的任何传入数据。

    我不知道您的用例,但将示例更改为下面的示例,您将能够看到传入的数据:

    DisposableServer server =
            HttpServer.create()
                    .host("localhost")
                    .port(8000)
                    .route(routes ->
                            routes.post("/echo",
                                    (request, response) ->
                                            response.sendString(request.receive()
                                                    .retain()
                                                    .aggregate()
                                                    .asString()
                                                    .flatMap(s -> {
                                                        System.out.println(s);
                                                        return Mono.just("hello");
                                                    })))
                    )
                    .bindNow();
    

    【讨论】:

    • 谢谢。也许我的反应堆编程基础太弱了。我不会尝试更多地研究这个主题。
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2016-10-02
    • 2020-04-01
    • 1970-01-01
    • 2020-08-08
    • 2019-04-02
    相关资源
    最近更新 更多