示例#1
0
  @Override
  public void start(final Handler<AsyncResult<Void>> doneHandler) {
    listener.registerJoinHandler(joinHandler);
    listener.registerLeaveHandler(leaveHandler);
    final CountingCompletionHandler<Void> counter = new CountingCompletionHandler<>(2);
    counter.setHandler(
        new Handler<AsyncResult<Void>>() {
          @Override
          public void handle(final AsyncResult<Void> result) {
            if (result.failed()) {
              stop(
                  new Handler<AsyncResult<Void>>() {
                    @Override
                    public void handle(AsyncResult<Void> stopResult) {
                      doneHandler.handle(result);
                    }
                  });
            } else {
              // A local handler is registered which allows components on the local node
              // to access the cluster quicker by preventing messages from going across
              // the network if possible.
              vertx.eventBus().registerHandler(local, messageHandler, counter);
              synchronized (registry) {
                registry.add(local);
              }
              doneHandler.handle(result);
            }
          }
        });

    vertx.eventBus().registerHandler(internal, internalHandler, counter);
    vertx.eventBus().registerHandler(group, messageHandler, counter);
  }