title: Setting multiple instances for Verticles using vertx embedded and Guice
body: <p>I am using Vertx cluster on the same machine(dev mode). 
  I am using guice to Inject some pojo's as well.</p>
  
  <p>However when I try to increase Verticle instances I get:</p>
  
  <pre><code>java.lang.IllegalArgumentException: Can't specify &gt; 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)
  </code></pre>
  
  <p>This is How I configure it:</p>
  
  <pre><code> 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 -&gt; {
              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));
                  ...
  }
  </code></pre>
  
  <p>Thats my AppInjector class:</p>
  
  <pre><code>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(() -&gt; {
              return new RedisRepo(deploymentOptions.getConfig());
          });
          bind(Neo4jRepo.class).toProvider(() -&gt; {
              return new Neo4jRepo(deploymentOptions.getConfig());
          });
      }
  }
  </code></pre>
  
  <p>Any idea why I get collision ? 
  I know that I should use by name: <code>com.mycompany.world_map_service.web.http.VertxHttpServerVerticle</code> but than if I inject dependencies they are going to be duplicated for each instance, won't they?</p>