2017-05-07 48 views
0

Vertx 3新手。我正在使用Java API。该用例用于通常处理大对象(PO​​JO)的报告应用程序。这些POJO包含要导出为PDF,CSV等的数据,这些通常是地图列表。 我想知道如果我不得不通过EventBus异步地将数据传递给不同的Verticle,那么将会产生序列化/反序列化的代价。在处理大对象时是否有任何提示/技巧,这样我们就不会为序列化/反序列化造成巨大的开销?Vertx 3 - Java序列化大型对象

+0

可能是什么尺寸? –

+0

http://stackoverflow.com/questions/129695/java-serializing-a-huge-amount-of-data-to-a-single-file –

+0

范围从50MB到100MB – user1189332

回答

0

您可以部署匿名工人verticle做到这一点:

假设LongOperatingVerticle是处理你的POJO的的verticle:

class LongOperatingVerticle extends AbstractVerticle { 

    @Override 
    public void start() { 

     final String pojo = "Very long file..."; 


     final Future<String> f = Future.future(); 

     // Anonymous verticle in worker mode 
     this.vertx.deployVerticle(new AbstractVerticle() { 
      @Override 
      public void start() throws Exception { 

       Thread.sleep(5000); 
       f.complete("Ok"); 
      } 
     }, new DeploymentOptions().setWorker(true)); 

     System.out.println("Will wait now"); 

     f.setHandler((e) -> { 
      System.out.println(e.result()); 
     }); 

    } 
} 
0

我认为这是坏主意通过EventBus送什么大。你可以使用vertx SharedData,并只发送你的对象的id。

LocalMap<String, LargeObject> map = vertx.sharedData.getLocalMap("uniq-map-id"); 
    map.put("unique-id", data); 
    vertx.eventBus.send(ADDRESS, "unique-id");