/*
 * Copyright 2014 Red Hat, Inc.
 *
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  and Apache License v2.0 which accompanies this distribution.
 *
 *  The Eclipse Public License is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 *
 *  The Apache License v2.0 is available at
 *  http://www.opensource.org/licenses/apache2.0.php
 *
 *  You may elect to redistribute this code under either of these licenses.
 */

package examples;

import com.hazelcast.config.Config;
import com.hazelcast.core.HazelcastInstance;
import io.vertx.core.Handler;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.core.spi.cluster.ClusterManager;
import io.vertx.ext.healthchecks.HealthCheckHandler;
import io.vertx.ext.healthchecks.HealthChecks;
import io.vertx.ext.healthchecks.Status;
import io.vertx.ext.web.Router;
import io.vertx.spi.cluster.hazelcast.ClusterHealthCheck;
import io.vertx.spi.cluster.hazelcast.ConfigUtil;
import io.vertx.spi.cluster.hazelcast.HazelcastClusterManager;

@author Tim Fox
/** * @author <a href="http://tfox.org">Tim Fox</a> */
public class Examples { public void example1() { ClusterManager mgr = new HazelcastClusterManager(); VertxOptions options = new VertxOptions().setClusterManager(mgr); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); } else { // failed! } }); } public void example2() { Config hazelcastConfig = new Config(); // Now set some stuff on the config (omitted) ClusterManager mgr = new HazelcastClusterManager(hazelcastConfig); VertxOptions options = new VertxOptions().setClusterManager(mgr); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); } else { // failed! } }); } public void customizeDefaultConfig() { Config hazelcastConfig = ConfigUtil.loadConfig(); hazelcastConfig.setClusterName("my-cluster-name"); ClusterManager mgr = new HazelcastClusterManager(hazelcastConfig); VertxOptions options = new VertxOptions().setClusterManager(mgr); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); } else { // failed! } }); } public void example3(HazelcastInstance hazelcastInstance) { ClusterManager mgr = new HazelcastClusterManager(hazelcastInstance); VertxOptions options = new VertxOptions().setClusterManager(mgr); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); } else { // failed! } }); } public void healthCheck(Vertx vertx) { Handler<Promise<Status>> procedure = ClusterHealthCheck.createProcedure(vertx); HealthChecks checks = HealthChecks.create(vertx).register("cluster-health", procedure); } public void healthCheckHandler(Vertx vertx, HealthChecks checks) { Router router = Router.router(vertx); router.get("/readiness").handler(HealthCheckHandler.createWithHealthChecks(checks)); } public void liteMemberConfig() { Config hazelcastConfig = ConfigUtil.loadConfig() .setLiteMember(true); ClusterManager mgr = new HazelcastClusterManager(hazelcastConfig); VertxOptions options = new VertxOptions().setClusterManager(mgr); Vertx.clusteredVertx(options, res -> { if (res.succeeded()) { Vertx vertx = res.result(); } else { // failed! } }); } }