Débuter avec Hazelcast

Installation ou configuration

Hazelcast s’exécute dans une machine virtuelle Java (JVM). Il est compatible avec les versions Java 1.6.x, 1.7.x et 1.8.x. L’installation et la configuration sont aussi simples que de télécharger l’archive zip (ou tar), de copier le répertoire non compressé dans le répertoire d’installation souhaité et d’ajouter le fichier jar à votre chemin de classe Java.

Par exemple, après avoir téléchargé le zip hazelcast depuis https://hazelcast.org/download/, en utilisant bash sous Linux (Hazelcast 3.7.4 est utilisé dans cet exemple, mais la version que vous téléchargez peut être différente) :

unzip hazelcast-3.7.4.zip

Configurez la variable CLASSPATH :

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

Vous devriez maintenant pouvoir démarrer le serveur hazelcast pour vérifier votre installation en exécutant le script de démarrage. Sous Linux, exécutez le script start.sh. Exemple de script et résultat attendu :

$ 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

Remarque : si votre installation Java ne se trouve pas dans un emplacement standard, vous devrez peut-être également définir la variable d’environnement JAVA_HOME.

Vous devriez maintenant être prêt à télécharger et à exécuter les exemples de code (disponibles sur http://download.hazelcast.com/code-samples/hazelcast-code-samples-3.7.4.zip), ou à commencer à jouer avec l’écriture de votre propre client Java Hazelcast simple pour se connecter au nœud de serveur Hazelcast que vous venez de démarrer.

Bonjour le monde!

Après l’installation de hazelcast et l’ajout à Java Build Path, vous pouvez écrire Main.class qui démarre le travail du cluster

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();
        }
    }
}

créer ClusterWorkingTask.class qui peut être exécuté sur chaque membre

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