Vertx 3 Новичок. Я использую API Java. Вариант использования предназначен для приложения для создания отчетов, которое обычно имеет дело с большими объектами (POJO). Эти POJO содержат данные для экспорта в PDF, CSV и т. д., и обычно это список карт. Мне интересно, если мне придется асинхронно передавать данные в разные вершины через EventBus, будет стоимость сериализации/десериализации. Есть ли какие-нибудь советы/рекомендации при работе с большими объектами, чтобы мы не несли огромные накладные расходы на сериализацию/десериализацию?
Vertx 3 — Java, сериализующий большие объекты
comment
Какой может быть размер?
- person akhil_mittal   schedule 07.05.2017
comment
stackoverflow.com/questions/129695/
- person akhil_mittal   schedule 07.05.2017
comment
от 50 МБ до 100 МБ
- person user1189332   schedule 07.05.2017
Ответы (2)
Я думаю, что это плохая идея отправлять что-либо большое через EventBus. Вы можете использовать vertx SharedData и отправлять только идентификатор вашего объекта.
LocalMap<String, LargeObject> map = vertx.sharedData.getLocalMap("uniq-map-id");
map.put("unique-id", data);
vertx.eventBus.send(ADDRESS, "unique-id");
person
Iliya
schedule
15.05.2017
Для этого вы можете развернуть анонимную рабочую вертикулу:
Предполагая, что LongOperatingVerticle — это вертикул, который обрабатывает ваши POJO:
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());
});
}
}
person
Alexey Soshin
schedule
07.05.2017