+ All Categories
Home > Documents > Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API...

Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API...

Date post: 27-May-2020
Category:
Upload: others
View: 63 times
Download: 1 times
Share this document with a friend
56
© 2015 Hazelcast Inc. Confidential & Proprietary 1 FUAD MALIKOV CO-FOUNDER Hazelcast for Java Developers
Transcript
Page 1: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 1

FUAD MALIKOVCO-FOUNDER

Hazelcast for Java Developers

Page 2: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 2

What Is Hazelcast?

Hazelcast is a distributed, highly available and scalable

Open Source In-Memory Data Grid

Page 3: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 3

In Memory Data Grid

010011010101010

In Memory Data Computing

In Memory Data Messaging ++In Memory

Data Storage

Page 4: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 4

java.util.Map

import java.util.HashMap;import java.util.Map;

public static void main(String[] args) {Map<Integer, String> map = new HashMap<>();map.put(1, "Paris");map.put(2, "London");map.put(3, "San Francisco");

String oldValue = map.remove(2);}

Page 5: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 5

java.util.concurrent.ConcurrentMap

import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.ConcurrentMap;

public static void main(String[] args) {ConcurrentMap<Integer, String> map = new ConcurrentHashMap<>();map.put(1, "Paris");map.put(2, "London");map.put(3, "San Francisco");

String oldValue = map.remove(2);}

Page 6: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 6

Distributed Map

import java.util.concurrent.ConcurrentMap;import com.hazelcast.core.Hazelcast;import com.hazelcast.core.HazelcastInstance;

public static void main(String[] args) {HazelcastInstance h = Hazelcast.newHazelcastInstance();

ConcurrentMap<Integer, String> map = h.getMap("myMap");map.put(1, "Paris");map.put(2, "London");map.put(3, "San Francisco");

String oldValue = map.remove(2);}

Page 7: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 7

Ecosystem TractionDozens of Commercial and Open Source Projects Embed Hazelcast

Page 8: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2016 Hazelcast Inc. Confidential & Proprietary 8

Select Customers by Industry

TELECOMMUNICATIONS

BANKING & FINANCIAL SERVICES

HIGH-TECH

LOGISTICS

INSURANCECONSUMER & ECOMMERCE

GAMING & ENTERTAINMENT

Page 9: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 9

Demo

Page 10: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 10

Why Hazelcast?

Scale-out Computing enables cluster capacity to be increased or decreased on-demand

Resilience with automatic recovery from member failures without losing data while minimizing performance impact on running applications

Programming Model provides a way for developers to easily program a cluster application as if it is a single process

Fast Application Performance enables very large data sets to be held in main memory for real-time performance

Page 11: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 11

Rebalance Data on New Node

11

Page 12: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 12

Distributed Maps

Fixed number of partitions (default 271)Each key falls into a partitionpartitionId = hash(keyData)%PARTITION_COUNTPartition ownerships are reassigned upon membership change

A B C

Page 13: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 13

New Node Added

DA B C

Page 14: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 14

Migration

DA B C

Page 15: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 15

Migration

DA B C

Page 16: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 16

Migration

DA B C

Page 17: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 17

Migration

DA B C

Page 18: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 18

Migration

DA B C

Page 19: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 19

Migration

DA B C

Page 20: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 20

Migration Complete

DA B C

Page 21: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 21

Data Safety when Node Dies

21

Page 22: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 22

Node Crashes

DA B C

Page 23: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 23

Backups Are Restored

DA B C

Page 24: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 24

Backups Are Restored

DA B C

Page 25: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 25

Backups Are Restored

DA B C

Page 26: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 26

Backups Are Restored

DA B C

Page 27: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 27

Backups Are Restored

DA B C

Page 28: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 28

Backups Are Restored

DA B C

Page 29: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 29

Backups Are Restored

DA B C

Page 30: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 30

Backups Are Restored

DA B C

Page 31: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 31

Recovery Is Complete

DA C

Page 32: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 32

Deployment Strategies

Page 33: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 33

Deployment Options

Great for early stages of rapid application development and iteration

Necessary for scale up or scale out deployments – decouples upgrading of clients and cluster for long term TCO

Embedded Hazelcast

HazelcastNode 1

Applications

Java API

Client-Server Mode

HazelcastNode 3

Java API

Applications

Java API

Applications

Java API

Applications

HazelcastNode 2

HazelcastNode 1

HazelcastNode 2

Applications

Java API

HazelcastNode 3

Applications

Java API

Page 34: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 34

Easy API

// Creating a new Hazelcast nodeHazelcastInstance hz = Hazelcast.newHazelcastInstance();

// Getting a Map, Queue, Topic, ...Map map = hz.getMap("my-map");Queue queue = hz.getQueue("my-queue");ITopic topic = hz.getTopic("my-topic");

//Creating a Hazelcast ClientHazelcastInstance client = HazelcastClient.newHazelcastClient();

// Shutting down the nodehz.shutdown();

Page 35: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 35

Feature Overview

Page 36: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 36

Hazelcast IMDG 3.8

Page 37: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 37

Easy to Unit Test

public class SomeTestCase {

private HazelcastInstance[] instances;

@Beforepublic void before() throws Exception {

// Multiple instances on the same JVMinstances = new HazelcastInstance[2];instances[0] = Hazelcast.newHazelcastInstance();instances[1] = Hazelcast.newHazelcastInstance();

}

@Afterpublic void after() throws Exception {

Hazelcast.shutdownAll();}

}

Page 38: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 38

IM Data Store (Caching) Use CaseDatabase Caching Use-Case

Business Systems

A B C

RDBMS Mainframe MongoDBNoSQL REST

ScaleHazelcast

HD Cache

Dist. Compute

Dist. Message

Page 39: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 39

Java Collection API: Map, List, Set, Queue

JCache

High Density Memory Store

Hibernate 2nd Level Cache

Web Session Replication: Tomcat, Jetty

Predicate API: Indexes, SQL Query

Persistence: Map/Queue Store & Loader. Write Behind/Through

Eviction

Near Cache

Transactions: Local & XA

WAN & DR Replication

Memcached Interface

IM Data Store (Caching) Features HD Cache

Dist. Compute

Dist. Message

Page 40: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 40

Map API

interface com.hazelcast.core.IMap<K, V>extends java.util.Map, java.util.ConcurrentMap

HazelcastInstance hz = getHazelcastInstance();

//java.util.concurrent.ConcurrentMap implementationIMap<String, User> hzMap = hz.getMap("users");hzMap.put("Peter", new User("Peter", "Veentjer"));

hzMap.putIfAbsent("Peter", new User("Peter", "Veentjer"));

//Distributed Lock hzMap.lock("Peter");

User peter = map.get("Peter");

Page 41: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 41

Persistence API

public class MapStorageimplements MapStore<String, User>, MapLoader<String, User> {

// Some methods missing ... @Override public User load(String key) { return loadValueDB(key); }@Override public Set<String> loadAllKeys() { return loadKeysDB(); }@Override public void delete(String key) { deleteDB(key); }@Override public void store(String key, User value) {

storeToDatabase(key, value);}

}

<map name="users"><map-store enabled="true">

<class-name>com.hazelcast.example.MapStorage</class-name><write-delay-seconds>0</write-delay-seconds>

</map-store></map>

Page 42: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 42

JCache API

// Retrieve the CachingProvider which is automatically baced by// the chosen Hazelcast server or client providerCachingProvider cachingProvider = Caching.getCachingProvider();

// Create a CacheManagerCacheManager cacheManager = cachingProvider.getCacheManager();

// Cache<String, String> cache = cacheManager// .getCache( name, String.class, String.class );

// Create a simple but typesafe configuration for the cache

CompleteConfiguration<String, String> config =new MutableConfiguration<String, String>()

.setTypes( String.class, String.class );

Page 43: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 43

JCache API

// Create and get the cacheCache<String, String> cache = cacheManager

.createCache( "example", config );// Alternatively to request an already existing cacheCache<String, String> cache = cacheManager

.getCache( name, String.class, String.class );

// Put a value into the cachecache.put( "world", "Hello World" );

// Retrieve the value again from the cacheString value = cache.get( "world" );

System.out.println( value );

Page 44: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 44

High Density Caching

On-Heap Memory Store (Objects Stored as Objects)

High-Density Memory Store(Objects Serialized and Stored as

Bytes)

On-Heap SLAB Allocator*

On-Heap SLAB Allocator*

2-4GB(Limited by Garbage Collection)

0-1TB(Limited by Machine RAM)

* coming in 3.6

Memory Stores•Member•Client (Near Cache)

RAM in JVM Process

APIs JCache(ICache)

Map(IMap)

HD Cache

Dist. Compute

Dist. Message

Page 45: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 45

On Heap Vs. High-Density Memory Management

On Heap Memory HD Memory v20 MB Native 3.3 GB

3.9 GB Heap Storage 0.6 GB9 (4900 ms) Major GC 0 (0 ms)31 (4200 ms) Minor GC 356 (349 ms)

Node UsedHeap

TotalHeap

Max.Heap

Heap UsagePercentage

Used Heap: 0.2 GB

192.168.1.10:5701 57 MB 229 MB 910 MB 6.28%

Memory Utilization

Home Offheap-test

Node Used Heap: 3.9 GB

192.168.1.10:5701 3933 MB 4658MB 4653MB 84.45%

Memory Utilization

Home

UsedHeap

TotalHeap

Max.Heap

Heap UsagePercentage

HD Cache

Dist. Compute

Dist. Message

Example: On Heap Memory Example: HD Memory v2

Page 46: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 46

Hazelcast Servers

Hazelcast ServerJVM [Memory]

IM Distributed Computing Use Case

A B C

Business Logic

Data Data Data

CE = Compute Engine

Result

Business / Processing Logic

Result

TCP / IP

Client Client

HD Cache

Dist. Compute

Dist. Message

Page 47: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 47

IM Distributed Computing Feature HD Cache

Dist. Compute

Dist. Message

Java Concurrency API (Lock, Semaphore, AtomicLong, AtomicReference, Executor Service, Blocking Queue)

Entry and Item Listeners

Entry Processor

Aggregators

Map/Reduce

Data Affinity

Continues Query

Map Interceptors

Delta Update

Page 48: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 48

Lock API

HazelcastInstance hz = getHazelcastInstance();

// Distributed ReentrantLock lock = hz.getLock("myLock");lock.lock();try {// Do something

} finally {lock.unlock();

}

Page 49: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 49

Executor Service API

public interface com.hazelcast.core.IExecutorServiceextends java.util.concurrent.ExecutorService

HazelcastInstance hz = getHazelcastInstance();

//java.util.concurrent.ExecutorService implementationIExecutorService es = hz.getExecutorService("name");es.executeOnAllMembers(buildRunnable());es.executeOnKeyOwner(buildRunnable(), "Peter");es.execute(buildRunnable());

Map<..> futures = es.submitToAllMembers(buildCallable());Future<..> future = es.submitToKeyOwner(buildCallable(), "Peter");

es.submitToAllMembers(buildCallable(), buildCallback());es.submitToKeyOwner(buildCallable(), "Peter", buildCallback());

Page 50: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 50

Map/Reduce API

HazelcastInstance hz = getHazelcastInstance();

Map users = hz.getMap("users");JobTracker tracker = hz.getJobTracker("default");

KeyValueSource source = KeyValueSource.fromMap(users);Job job = tracker.newJob(source);

ICompleteFuture future = job.mapper(new MyMapper()).reducer(new MyReducer()).submit();

Map result = future.get();

Page 51: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 51

Aggregations API

HazelcastInstance hz = getHazelcastInstance();

Map users = hz.getMap("users");

int sum = users.aggregate(Supplier.all((user) -> user.getSalary()),Aggregations.longSum()

);

Page 52: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 52

IM Distributed Messaging Use Case

Hazelcast Distributed Topic Bus

HazelcastTopic

HazelcastNode 1

HazelcastNode 2

HazelcastNode 3

MSG

Subscribes

Delivers

Subscribes

Delivers

HD Cache

Dist. Compute

Dist. Message

Page 53: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 53

Queue

Topic (Pub/Sub)

Event Listeners

Ring Buffers

IM Distributed Messaging Features HD Cache

Dist. Compute

Dist. Message

Page 54: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 54

Queue API

interface com.hazelcast.core.IQueue<E>extends java.util.concurrent.BlockingQueue

HazelcastInstance hz = getHazelcastInstance();

//java.util.concurrent.BlockingQueue implementationIQueue<Task> queue = hz.getQueue("tasks");

queue.offer(newTask());queue.offer(newTask(), 500, TimeUnit.MILLISECONDS);

Task task = queue.poll();Task task = queue.poll(100, TimeUnit.MILLISECONDS);Task task = queue.take();

Page 55: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

© 2015 Hazelcast Inc. Confidential & Proprietary 55

Topic API

public class Example implements MessageListener<String> {public void sendMessage {HazelcastInstance hz = getHazelcastInstance();ITopic<String> topic = hz.getTopic("topic");topic.addMessageListener(this);topic.publish("Hello World");

}

@Overridepublic void onMessage(Message<String> message) {System.out.println("Got message: " + message.getMessageObject());

}}

Page 56: Hazelcast for Java Developers - SDJUGJava API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node

Thank you@fuadm, @hazelcast

[email protected]://www.hazelcast.com

http://github.com/hazelcast/hazelcast


Recommended