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

在HTTP服务器中使用rxEnd时未提交响应

姜弘新
2023-03-14

我有一个用vert编写的双垂直服务器。x反应性扩展。HTTP server verticle使用事件总线向DB verticle发送请求。从DB verticle(通过事件总线)接收到响应后,我使用rxEnd将响应发送到http客户端。然而,客户似乎没有收到这种回复,最终超时。如果我用end()来代替,事情会很顺利。我使用postman来测试这个RESTAPI。请参阅下面的代码,该代码将结果从数据库垂直转发到客户端。

routerFactory.addHandlerByOperationId("createChargePoints", routingContext -> {
            RequestParameters params = routingContext.get("parsedParameters");

            RequestParameter body = params.body();
            JsonObject jsonBody = body.getJsonObject();

            vertx.eventBus().rxRequest("dbin", jsonBody)
                    .map(message -> {
                        System.out.println(message.body());
                        return routingContext.response().setStatusCode(200).rxEnd(message.body().toString());
                    })
                    .subscribe(res -> {
                        System.out.println(res);
                    }, res -> {
                        System.out.println(res);
                    });
        });

共有1个答案

叶衡虑
2023-03-14

rxEnd方法是end的一个变体,它返回一个可完成的。前者懒惰,后者则不然。

换句话说,如果您调用rxend,您必须订阅完成,否则什么都不会发生。

看看你的代码片段,我认为没有必要使用rxEnd。实际上,您似乎不需要知道请求是否成功发送。

 类似资料:
  • 正如前面的章节中讨论的那样,当一个 Web 服务器响应一个 HTTP 请求时,响应通常包括一个状态行、一些响应报头、一个空行和文档。一个典型的响应如下所示: HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>...</he

  • 刚开始使用wiremock,遇到了一个场景,我想用一个特定的json响应来存根GET请求。 将json附加到预期响应时; 我得到例外java.io.FileNotFoundException: src/test/资源/__files/product.json(没有这样的文件或目录)。 问题是我在这个位置有json文件。

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 在这里更新了Plunkr 问题答案: 这是一个可以满足您需求的Plunk:http ://plnk

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 问题答案: 这个想法是您直接使用promise及其promise,然后使用它们的“ then”函数

  • 我正在尝试上传一个xml文件。当使用MultipartEntityBuilder将二进制格式的文件添加到HttpEntity时,我收到以下错误 我已经通过了链接 https://www.baeldung.com/httpclient-multipart-upload 我的理解是,该文件不被接受,因为http实体无法发送MultipartEntityBuilder,但我可能错了。

  • 我希望能够创建一个自定义的AngularJS服务,当其数据对象为空时发出HTTP“GET”请求,并在成功时填充数据对象。 下一次调用此服务时,我希望绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。 这可能吗?