From 897e24552410ce51683c081c2c8640e43c115f42 Mon Sep 17 00:00:00 2001 From: "nguyenminhtuanfit@gmail.com" Date: Sat, 3 Sep 2016 11:32:42 +0700 Subject: [PATCH 1/3] BAEL-221 - Guide to Hazelcast --- hazelcast/pom.xml | 72 +++++++++++++++++++ .../hazelcast/cluster/NativeClient.java | 26 +++++++ .../hazelcast/cluster/ServerNode.java | 23 ++++++ .../listener/CountryEntryListener.java | 41 +++++++++++ hazelcast/src/main/resources/hazelcast.xml | 16 +++++ hazelcast/src/main/resources/logback.xml | 18 +++++ 6 files changed, 196 insertions(+) create mode 100644 hazelcast/pom.xml create mode 100644 hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java create mode 100644 hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java create mode 100644 hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java create mode 100644 hazelcast/src/main/resources/hazelcast.xml create mode 100644 hazelcast/src/main/resources/logback.xml diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml new file mode 100644 index 0000000000..62cfa89c0f --- /dev/null +++ b/hazelcast/pom.xml @@ -0,0 +1,72 @@ + + 4.0.0 + com.baeldung + hazelcast + 0.0.1-SNAPSHOT + hazelcast + + + + + com.hazelcast + hazelcast-all + ${hazelcast.version} + + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + ch.qos.logback + logback-core + ${logback.version} + + + + + + hazelcast + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + + + 3.7 + + + 1.7.21 + 1.1.7 + + + 3.5.1 + + + \ No newline at end of file diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java new file mode 100644 index 0000000000..bda4b94733 --- /dev/null +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java @@ -0,0 +1,26 @@ +package com.baeldung.hazelcast.cluster; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.baeldung.hazelcast.listener.CountryEntryListener; +import com.hazelcast.client.HazelcastClient; +import com.hazelcast.client.config.ClientConfig; +import com.hazelcast.config.GroupConfig; +import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.core.IMap; + +public class NativeClient { + private static final Logger logger = LoggerFactory.getLogger(NativeClient.class); + + public static void main(String[] args) throws InterruptedException { + ClientConfig config = new ClientConfig(); + GroupConfig groupConfig = config.getGroupConfig(); + groupConfig.setName("dev"); + groupConfig.setPassword("dev-pass"); + HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient(config); + IMap countryMap = hazelcastInstanceClient.getMap("country"); + countryMap.addEntryListener(new CountryEntryListener(), true); + logger.info("Country map size: " + countryMap.size()); + } +} diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java new file mode 100644 index 0000000000..8680180399 --- /dev/null +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java @@ -0,0 +1,23 @@ +package com.baeldung.hazelcast.cluster; + +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; +import com.hazelcast.core.IdGenerator; + +public class ServerNode { + private static final Logger logger = LoggerFactory.getLogger(ServerNode.class); + + public static void main(String[] args) { + HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); + Map countryMap = hazelcastInstance.getMap("country"); + IdGenerator idGenerator = hazelcastInstance.getIdGenerator("newid"); + Long countryIdGenerator = idGenerator.newId() == 0L ? 1L : idGenerator.newId(); + countryMap.put(countryIdGenerator, "Country1"); + logger.info("Country map size: " + countryMap.size()); + } +} diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java b/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java new file mode 100644 index 0000000000..1f95dcd9f3 --- /dev/null +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java @@ -0,0 +1,41 @@ +package com.baeldung.hazelcast.listener; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.hazelcast.core.EntryEvent; +import com.hazelcast.core.MapEvent; +import com.hazelcast.map.listener.EntryAddedListener; +import com.hazelcast.map.listener.EntryEvictedListener; +import com.hazelcast.map.listener.EntryRemovedListener; +import com.hazelcast.map.listener.EntryUpdatedListener; +import com.hazelcast.map.listener.MapClearedListener; +import com.hazelcast.map.listener.MapEvictedListener; + +public class CountryEntryListener implements EntryAddedListener, EntryRemovedListener, EntryUpdatedListener, EntryEvictedListener, MapEvictedListener, MapClearedListener { + private static final Logger logger = LoggerFactory.getLogger(CountryEntryListener.class); + + public void entryAdded(EntryEvent event) { + logger.info("entryAdded:" + event); + } + + public void entryUpdated(EntryEvent event) { + logger.info("entryUpdated:" + event); + } + + public void entryRemoved(EntryEvent event) { + logger.info("entryRemoved:" + event); + } + + public void entryEvicted(EntryEvent event) { + logger.info("entryEvicted:" + event); + } + + public void mapCleared(MapEvent event) { + logger.info("mapCleared:" + event); + } + + public void mapEvicted(MapEvent event) { + logger.info("mapEvicted:" + event); + } +} diff --git a/hazelcast/src/main/resources/hazelcast.xml b/hazelcast/src/main/resources/hazelcast.xml new file mode 100644 index 0000000000..f29dc532b8 --- /dev/null +++ b/hazelcast/src/main/resources/hazelcast.xml @@ -0,0 +1,16 @@ + + + + 5701 + + + + + machine1 + localhost + + + + \ No newline at end of file diff --git a/hazelcast/src/main/resources/logback.xml b/hazelcast/src/main/resources/logback.xml new file mode 100644 index 0000000000..8b566286b8 --- /dev/null +++ b/hazelcast/src/main/resources/logback.xml @@ -0,0 +1,18 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n + + + + + + + + + + + + \ No newline at end of file From 877706d2e17df91e5bb4a82b2d48faf0ecbfd4bd Mon Sep 17 00:00:00 2001 From: "nguyenminhtuanfit@gmail.com" Date: Fri, 7 Oct 2016 23:04:36 +0700 Subject: [PATCH 2/3] added hazelcast client, removed id generator --- hazelcast/pom.xml | 131 +++++++++--------- .../hazelcast/cluster/ServerNode.java | 5 +- 2 files changed, 71 insertions(+), 65 deletions(-) diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 62cfa89c0f..00960eadd2 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -1,72 +1,77 @@ - 4.0.0 - com.baeldung - hazelcast - 0.0.1-SNAPSHOT - hazelcast + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + hazelcast + 0.0.1-SNAPSHOT + hazelcast - - - - com.hazelcast - hazelcast-all - ${hazelcast.version} - - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - - ch.qos.logback - logback-classic - ${logback.version} - - - - ch.qos.logback - logback-core - ${logback.version} - + + + com.hazelcast + hazelcast + ${hazelcast.version} + + + + com.hazelcast + hazelcast-client + 3.7.2 + + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + ch.qos.logback + logback-core + ${logback.version} + - + - - hazelcast - - - src/main/resources - true - - + + hazelcast + + + src/main/resources + true + + - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - - - + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + - - - 3.7 - - - 1.7.21 - 1.1.7 + + + 3.7.2 + + + 1.7.21 + 1.1.7 - - 3.5.1 - + + 3.5.1 + \ No newline at end of file diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java index 8680180399..01043cf712 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java @@ -16,8 +16,9 @@ public class ServerNode { HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); Map countryMap = hazelcastInstance.getMap("country"); IdGenerator idGenerator = hazelcastInstance.getIdGenerator("newid"); - Long countryIdGenerator = idGenerator.newId() == 0L ? 1L : idGenerator.newId(); - countryMap.put(countryIdGenerator, "Country1"); + for (int i = 0; i < 10; i++) { + countryMap.put(idGenerator.newId(), "message" + 1); + } logger.info("Country map size: " + countryMap.size()); } } From 97d0c7144961367887dfb7cb1bc54e062002d851 Mon Sep 17 00:00:00 2001 From: Prashant Khanal Date: Tue, 11 Oct 2016 16:06:10 -0700 Subject: [PATCH 3/3] Code cleanup Signed-off-by: nguyenminhtuanfit@gmail.com --- .../hazelcast/cluster/NativeClient.java | 12 +++--- .../hazelcast/cluster/ServerNode.java | 9 +--- .../listener/CountryEntryListener.java | 41 ------------------- 3 files changed, 7 insertions(+), 55 deletions(-) delete mode 100644 hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java index bda4b94733..697e362289 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java @@ -1,9 +1,7 @@ package com.baeldung.hazelcast.cluster; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.util.Map.Entry; -import com.baeldung.hazelcast.listener.CountryEntryListener; import com.hazelcast.client.HazelcastClient; import com.hazelcast.client.config.ClientConfig; import com.hazelcast.config.GroupConfig; @@ -11,7 +9,6 @@ import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; public class NativeClient { - private static final Logger logger = LoggerFactory.getLogger(NativeClient.class); public static void main(String[] args) throws InterruptedException { ClientConfig config = new ClientConfig(); @@ -19,8 +16,9 @@ public class NativeClient { groupConfig.setName("dev"); groupConfig.setPassword("dev-pass"); HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient(config); - IMap countryMap = hazelcastInstanceClient.getMap("country"); - countryMap.addEntryListener(new CountryEntryListener(), true); - logger.info("Country map size: " + countryMap.size()); + IMap map = hazelcastInstanceClient.getMap("data"); + for (Entry entry : map.entrySet()) { + System.out.println(String.format("Key: %d, Value: %s", entry.getKey(), entry.getValue())); + } } } diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java index 01043cf712..36028834a4 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java @@ -2,23 +2,18 @@ package com.baeldung.hazelcast.cluster; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IdGenerator; public class ServerNode { - private static final Logger logger = LoggerFactory.getLogger(ServerNode.class); public static void main(String[] args) { HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); - Map countryMap = hazelcastInstance.getMap("country"); + Map map = hazelcastInstance.getMap("data"); IdGenerator idGenerator = hazelcastInstance.getIdGenerator("newid"); for (int i = 0; i < 10; i++) { - countryMap.put(idGenerator.newId(), "message" + 1); + map.put(idGenerator.newId(), "message" + 1); } - logger.info("Country map size: " + countryMap.size()); } } diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java b/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java deleted file mode 100644 index 1f95dcd9f3..0000000000 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.hazelcast.listener; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.hazelcast.core.EntryEvent; -import com.hazelcast.core.MapEvent; -import com.hazelcast.map.listener.EntryAddedListener; -import com.hazelcast.map.listener.EntryEvictedListener; -import com.hazelcast.map.listener.EntryRemovedListener; -import com.hazelcast.map.listener.EntryUpdatedListener; -import com.hazelcast.map.listener.MapClearedListener; -import com.hazelcast.map.listener.MapEvictedListener; - -public class CountryEntryListener implements EntryAddedListener, EntryRemovedListener, EntryUpdatedListener, EntryEvictedListener, MapEvictedListener, MapClearedListener { - private static final Logger logger = LoggerFactory.getLogger(CountryEntryListener.class); - - public void entryAdded(EntryEvent event) { - logger.info("entryAdded:" + event); - } - - public void entryUpdated(EntryEvent event) { - logger.info("entryUpdated:" + event); - } - - public void entryRemoved(EntryEvent event) { - logger.info("entryRemoved:" + event); - } - - public void entryEvicted(EntryEvent event) { - logger.info("entryEvicted:" + event); - } - - public void mapCleared(MapEvent event) { - logger.info("mapCleared:" + event); - } - - public void mapEvicted(MapEvent event) { - logger.info("mapEvicted:" + event); - } -}