Config clusterConf = new Config("chat-server-cluster");
clusterConf.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
clusterConf.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true).addMember("127.0.0.1");
HazelcastClusterManager manager = new HazelcastClusterManager(clusterConf);
VertxOptions options = new VertxOptions();
options.setBlockedThreadCheckInterval(1000 * 30);
options.setClusterManager(manager);
Vertx.clusteredVertx(options, new Handler<AsyncResult<Vertx>>() {
@Override
public void handle(AsyncResult<Vertx> event) {
if (event.succeeded()) {
Vertx vertx = event.result();
List<String> nodes = manager.getNodes();
for (String name : nodes) {
System.out.println(name);
}
manager.getLockWithTimeout("test", 10000, new Handler<AsyncResult<Lock>>() {
@Override
public void handle(AsyncResult<Lock> event) {
if (event.succeeded()) {
Lock lock = event.result();
vertx.setTimer(5000, res -> {
lock.release();
});
} else {
logger.error(event.cause().getMessage(), event.cause());
}
}
});
// deployServer(vertx);
}
}
});
<!-- Used internally in Vert.x to implement async locks -->
<semaphore name="__vertx.*">
<initial-permits>1</initial-permits>
</semaphore>