Primeros pasos con Hazelcast

Instalación o configuración

Hazelcast se ejecuta dentro de una máquina virtual Java (JVM). Es compatible con las versiones de Java 1.6.x, 1.7.x y 1.8.x. La instalación y la configuración son tan simples como descargar el archivo zip (o tar), copiar el directorio sin comprimir en el directorio de instalación deseado y agregar el archivo jar a su classpath de Java.

Por ejemplo, después de descargar el zip de hazelcast desde https://hazelcast.org/download/, usando bash en Linux (en este ejemplo se usa Hazelcast 3.7.4, pero la versión que descargue puede ser diferente):

unzip hazelcast-3.7.4.zip

Configure la variable CLASSPATH:

export CLASSPATH=${CLASSPATH}:${PWD}:hazelcast-3.7.4/lib/hazelcast-3.7.4.jar

Ahora debería poder iniciar el servidor Hazelcast para verificar su instalación ejecutando el script de inicio. En Linux, ejecute el script start.sh. Ejemplo de secuencia de comandos y salida esperada:

$ hazelcast-3.7.4/bin/start.sh
JAVA_HOME environment variable not available.
Path to Java : /path/to/your/java

... ### More output here, ending with lines similar to: ### ...

Members [1] {
    Member [192.168.38.1]:5701 - 3456f96d-3646-459b-9199-caa6ebb3e5ee this
}

Jan 07, 2017 8:30:53 PM com.hazelcast.core.LifecycleService
INFO: [192.168.XX.XX]:5701 [dev] [3.7.4] [192.168.38.1]:5701 is STARTED

Nota: si su instalación de Java no está en una ubicación estándar, es posible que también deba configurar la variable de entorno JAVA_HOME.

Ahora debería estar configurado para descargar y ejecutar los ejemplos de código (disponibles en http://download.hazelcast.com/code-samples/hazelcast-code-samples-3.7.4.zip), o para empezar a jugar escribiendo su propio cliente Java Hazelcast simple para conectarse al nodo del servidor Hazelcast que acaba de iniciar.

¡Hola Mundo!

Después de instalar Hazelcast y agregar a Java Build Path, puede escribir Main.class que inicia el trabajo del clúster

public static void main(String[] args){
    Config config = new Config();
    // creates a new HazelcastInstance (a new node in a cluster)
    HazelcastInstance instance = Hazelcast.newHazelcastInstance(config);
    // returns the Cluster that this HazelcastInstance is part of
    Cluster cluster = instance.getCluster();
    // get all devices, that are in the cluster
    Set<Member> setMembers = cluster.getMembers();

    // get ExecutorService that works on cluster instance
    ExecutorService mService = instance.getExecutorService("exec");
    
    for (int i = 0; i < setMembers.size(); i++) {
        // send a task for each member on service of HazelcastInstance
        final Future<String> future = mService.submit(new ClusterWorkingTask());
        
        String response = null;
        try {
            // wait for response
            response = future.get();
            System.out.println(response);  // each member return: Hello World!
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

crear ClusterWorkingTask.class que se puede ejecutar en cada miembro

public class ClusterWorkingTask implements Callable<String>, Serializable {
    @Override
    public String call() throws Exception {
        // send Hello World! as result of execution
        return "Hello World!";
    }
}