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

问题描述 投票:0回答:1

我有两个用vert.x +反应性扩展编写的verticle服务器。 HTTP服务器verticle使用事件总线将请求发送到DB verticle。从DB verticle接收到响应之后(通过事件总线),我使用rxEnd将响应发送到http客户端。但是,客户似乎没有收到此响应,并最终超时。如果我改用end(),一切正常。我使用邮递员来测试此REST API。请参阅下面的代码,这些结果将结果从DB顶点转发到客户端。

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);
                    });
        });
vert.x
1个回答
0
投票
lazy,后者不是。

换句话说,如果您调用rxEnd,则必须订阅Completable,否则不会发生任何事情。

查看您的代码段,我认为没有必要使用rxEnd。确实,您似乎不需要知道请求是否已成功发送。
© www.soinside.com 2019 - 2024. All rights reserved.