2017-05-07 162 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");