2017-05-07 1 views
0

Vertx 3 Débutant. J'utilise l'API Java. L'utilisation est pour une application de reporting qui traite généralement des objets volumineux (POJO). Ces POJO contiennent les données à exporter en PDF, CSV, etc. et ce sont généralement des listes de cartes. Je me demande si je dois transmettre de manière asynchrone les données à différents verticles via le EventBus, il va y avoir un coût de sérialisation/désérialisation. Existe-t-il des astuces/astuces pour traiter les gros objets afin de ne pas avoir à subir une énorme surcharge de sérialisation/désérialisation?Vertx 3 - sérialisation de grands objets Java

+0

Quelle pourrait être la taille? –

+0

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

+0

allant de 50 Mo à 100 Mo – user1189332

Répondre

0

Vous pouvez déployer travailleur anonyme verticle à faire:

En supposant LongOperatingVerticle est le verticle qui gère votre POJO de:

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

Je pense qu'il est mauvaise idée d'envoyer quoi que ce soit à travers un grand EventBus. Vous pouvez utiliser vertex SharedData et envoyer uniquement l'identifiant de votre objet.

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