Установка нескольких экземпляров для Verticles с использованием встроенного vertx и GuiceJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Установка нескольких экземпляров для Verticles с использованием встроенного vertx и Guice

Сообщение Anonymous »

Я использую кластер Vertx на том же компьютере (режим разработки).
Я также использую guice для внедрения некоторых Pojo.

Однако, когда я пытаюсь увеличить количество экземпляров Verticle, я получаю:

Код: Выделить всё

java.lang.IllegalArgumentException: Can't specify > 1 instances for already created verticle
at io.vertx.core.impl.DeploymentManager.deployVerticle(DeploymentManager.java:70)
at io.vertx.core.impl.VertxImpl.deployVerticle(VertxImpl.java:516)
at io.vertx.core.impl.VertxImpl.deployVerticle(VertxImpl.java:511)
at com.mycompany.world_map_service.web.starter.StarterVerticle.lambda$main$0(StarterVerticle.java:39)
Вот как я это настраиваю:

Код: Выделить всё

 public static void main(String[] args) throws Exception {

final Logger logger = Logger.getLogger(StarterVerticle.class);

ClusterManager mgr = new HazelcastClusterManager();
VertxOptions options = new VertxOptions().setClusterManager(mgr);
Vertx.clusteredVertx(options, res -> {
DeploymentOptions deploymentOptions = new DeploymentOptions().setConfig(config);
if (res.succeeded()) {
Vertx vertx = res.result();
//  Injector injector = Guice.createInjector(new AppInjector(vertx));
Injector injector = Guice.createInjector(new AppInjector(vertx, deploymentOptions));
vertx.deployVerticle(injector.getInstance(VertxHttpServerVerticle.class), deploymentOptions.setInstances(3));
...
}
Это мой класс AppInjector:

Код: Выделить всё

public class AppInjector extends AbstractModule {

private Vertx vertx = null;
private Context context = null;
DeploymentOptions deploymentOptions = null;

public AppInjector(Vertx vertx, DeploymentOptions deploymentOptions) {
this.vertx = vertx;
this.context = vertx.getOrCreateContext();
this.deploymentOptions = deploymentOptions;
}

@Override
protected void configure() {
bind(LocationService.class).to(LocationServiceImpl.class).in(Singleton.class);
bind(LocationServiceDAO.class).to(LocationServiceDaoImpl.class).in(Singleton.class);
bind(RedisRepo.class).toProvider(() -> {
return new RedisRepo(deploymentOptions.getConfig());
});
bind(Neo4jRepo.class).toProvider(() -> {
return new Neo4jRepo(deploymentOptions.getConfig());
});
}
}
Есть идеи, почему у меня происходит столкновение?
Я знаю, что мне следует использовать по имени: com.mycompany.world_map_service.web.http.VertxHttpServerVerticle, но если я внесу зависимости, они будут дублироваться для каждого экземпляра, не так ли?< /п>

Подробнее здесь: https://stackoverflow.com/questions/328 ... -and-guice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»