ExecuteBlocking和Compositefuture.all()协调

时间:2019-07-14 14:42:03

标签: vert.x

我有一个来自executeBlocking的期货列表。我试图等待Compositefuture.all中的所有futureResponses。但是它不在Compositefuture内部。

当我尝试打印列表时,它显示了Future。

 List<Future> toComplete=new ArrayList<>();
        Vertx vertx = Vertx.vertx();int i;
        for(i=0;i<requestsListInDept.size();i++)
        {
            String reqtype = requestsListInDept.getString(i);
            JsonObject requestProperties = dataReader.getRequestProperties(dept,reqtype);
           toComplete.add(Future.future());
           int currrent=i;
            vertx.executeBlocking(future->{
                System.out.println("calling for ");
                String individualResponse  = accReq.createRequests(requestContext,reqtype,empid,requestProperties);

                future.complete(individualResponse);
            },false,res->{
                JsonArray obj=new JsonArray( (res.result()).toString() );
                for(int index=0;index<obj.size();index++)
                {
                    JsonObject requestResponse=obj.getJsonObject(index);
                    response.add(requestResponse);

                }
                toComplete.get(currrent).complete(res.result());
            });
        }
      CompositeFuture.all(toComplete).setHandler(e -> {
                String collect = e.result()
                        .list()
                        .stream()
                        .map(Object::toString)
                        .collect(Collectors.joining(" ------- "));
                System.out.println(collect);
            });

return ;

期望:返回应该等待所有将来的响应出现。 实际:不是等待所有期货完成。

0 个答案:

没有答案