当前位置: 首页 > 知识库问答 >
问题:

为什么不能在reactor netty中订阅请求?

甄越
2023-03-14

我只想访问reactor netty项目中的Http内容。但结果为空。

代码如下。

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();

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

我可以像在代码中一样访问请求吗?有人能帮忙吗?谢谢。

共有1个答案

阴礼骞
2023-03-14

您在接收到请求数据之前返回响应,因此反应器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();
 类似资料:
  • 问题内容: 为什么数据存储Redis具有发布/订阅功能?我首先想到的是实现这样的事情是错误的层。但也许我需要跳出框框思考。 问题答案: Redis被定义为数据结构服务器。Redis提供了多种功能,例如内存缓存,队列,发布订阅等。这对于cloudapp / webstack非常有用,其中3个组件RabbitMQ(排队)+ XMPP(发布订阅)+内存缓存目前可以用redis代替。排队功能不如Rabbi

  • 我正在学习RxJava。我订阅了一个长时间运行的回调作为可观察回调,并希望看到执行onNext回调: 我希望打印输出“6”,但该方法在此之前完成。 如果我没有在IO调度程序上订阅,那么调用将被阻止,并且我确实看到打印的输出。 我的问题是,如果在IO调度程序上运行,为什么不执行回调。我知道test()方法已终止,但尚未释放对订阅回调的引用。

  • 1.使用者角度 为企业、组织或个人提供一种信息传播方式,用对口的内容达成企业、组织与成员之间的沟通和知识传播。体现在为用户提供内容服务,传达各类资讯,用户订阅后,可在轻推客户端定期接收到内容资讯的推送 2.开发者角度 主要通过会话的形式为用户提供服务,用户在协同界面点击订阅号图标后,可直接进入与订阅号的聊天界面,开发难度低,支持在后台定制菜单,通过菜单引导用户到不同的去处。通知消息会被折叠在订阅消

  • 通过选择,,和,我创建了一个全新的Spring初始化项目。 我做了一个小项目: 我试着将三个人保存到数据库中。保存方法只返回需要执行的Mono。如果我尝试通过简单的订阅来执行它,一切都很好: 但是,当我使用而不是时,应用程序挂起: 如果我手动查询数据库,我会看到Jim已被保存,但Jack和John未被保存。 这是窃听器,还是我做错了什么?我希望在代码进一步发展之前保证用户在数据库中,所以我真的很想

  • 在什么情况下Spring webflow会进行订阅?我在任何地方都读到必须有订阅,否则不会发生任何更改。在我使用Spring Webflow的短暂时间里,我从未在控制器或服务中见过。 我的疑问还在于,在使用flatMap时,。。。等订阅在什么时候进行? 我所读的并不能真正解决我的疑虑。 我知道这是一个异步问题,但每个flatMap都同时运行?。。。所以有时候我注意到一些数据是空的。

  • 我试图理解可观察对象是如何执行的,但似乎无法让这个简单的代码正常工作。 不应该是你好。订阅()执行?