我有两个用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);
});
});
换句话说,如果您调用rxEnd
,则必须订阅Completable
,否则不会发生任何事情。
rxEnd
。确实,您似乎不需要知道请求是否已成功发送。