Mongodb 下面的Vert.x代码真的是被动的吗?

Mongodb 下面的Vert.x代码真的是被动的吗?,mongodb,java-8,vert.x,reactive,Mongodb,Java 8,Vert.x,Reactive,我是否对“反应性”有错误的理解,或者我的示例中是否有错误? 我在Vertx中做了一个小代码示例:在REST服务中,我从mongodb读取数据并以JSON的形式返回 ........... Router router = Router.router(vertx); router.route().handler(BodyHandler.create()); router.get("/gilders").handler(this::listAll); vertx.creat

我是否对“反应性”有错误的理解,或者我的示例中是否有错误? 我在Vertx中做了一个小代码示例:在REST服务中,我从mongodb读取数据并以JSON的形式返回

...........
Router router = Router.router(vertx);

    router.route().handler(BodyHandler.create());
    router.get("/gilders").handler(this::listAll);

    vertx.createHttpServer().requestHandler(router::accept).listen(8080);
  }



  private void listAll(RoutingContext routingContext) {
    mongoClient.find("gliders", new JsonObject(), results -> {
      List<JsonObject> objects = results.result();

      /* is this non blocking?!
         mongoClient.find return immediately, but the rest client just
         gets results, after mongo delivered all results
      */

      List<Glider> gilder = objects.stream()
              .map(res -> {
                Glider g = new Glider();
                g.setName(res.getString("name"));
                g.setPrice(res.getString("price"));
                return g;
              })
              .collect(Collectors.toList());

      routingContext.response()
              .putHeader("content-type", "application/json; charset=utf-8")
              .end(Json.encodePrettily(gilder));
    });
  }
。。。。。。。。。。。
路由器=路由器。路由器(vertx);
router.route().handler(BodyHandler.create());
router.get(“/gilders”).handler(this::listAll);
createHttpServer().requestHandler(路由器::接受).listen(8080);
}
私有void listAll(RoutingContext RoutingContext){
查找(“gliders”,新JsonObject(),结果->{
List objects=results.result();
/*这是非阻塞吗?!
find立即返回,但是rest客户端只是
在mongo交付所有结果后获取结果
*/
List gilder=objects.stream()
.map(res->{
滑翔机g=新滑翔机();
g、 setName(res.getString(“name”);
g、 设置价格(res.getString(“价格”));
返回g;
})
.collect(Collectors.toList());
routingContext.response()文件
.putHeader(“内容类型”、“应用程序/json;字符集=utf-8”)
.end(Json.encodeprettly(gilder));
});
}
好的,它没有阻塞,我可以在等待mongo的同时计算其他东西


但不知何故,我认为“反应式”是REST客户机将已经获得mongo结果的第一个块,即使mongo到那时还没有准备好查找所有结果(HTTP流)。但是像这样,当mongo找到所有结果时,回调就被调用了。

反应式与流式处理不同。反应性是一个围绕数据流的概念,您的应用程序将对事件做出反应,例如:从mongoDB返回的数据。现在,您可以通过请求mongo客户端在数据从网络到达时尽快开始泵送数据来实现流式传输。但是,在阻塞API中,您可以通过阻塞应用程序的数据流,然后将其逐个传递给消费者。

好的,在否决投票中,我已经注意到,这是一个愚蠢的问题。但我认为问愚蠢的问题比保持愚蠢要好