Ignite ignite = Ignition.ignite();
// Messaging instance over this cluster.
IgniteMessaging msg = ignite.message();
// Messaging instance over given cluster group (in this case, remote nodes).
IgniteMessaging rmtMsg = ignite.message(ignite.cluster().forRemotes());
//本地监听
Ignite ignite = Ignition.ignite();
// Local listener that listenes to local events.
IgnitePredicate<CacheEvent> locLsnr = evt -> {
System.out.println("Received event [evt=" + evt.name() + ", key=" + evt.key() +
", oldVal=" + evt.oldValue() + ", newVal=" + evt.newValue());
returntrue; // Continue listening.
};
// Subscribe to specified cache events occuring on local node.
ignite.events().localListen(locLsnr,
EventType.EVT_CACHE_OBJECT_PUT,
EventType.EVT_CACHE_OBJECT_READ,
EventType.EVT_CACHE_OBJECT_REMOVED);
// Get an instance of named cache.final IgniteCache<Integer, String> cache = ignite.cache("cacheName");
// Generate cache events.for (int i = 0; i < 20; i++)
cache.put(i, Integer.toString(i));
//远程监听
Ignite ignite = Ignition.ignite();
// Get an instance of named cache.final IgniteCache<Integer, String> cache = ignite.jcache("cacheName");
// Sample remote filter which only accepts events for keys// that are greater than or equal to 10.
IgnitePredicate<CacheEvent> rmtLsnr = evt -> evt.<Integer>key() >= 10;
// Subscribe to specified cache events on all nodes that have cache running.
ignite.events(ignite.cluster().forCacheNodes("cacheName")).remoteListen(null, rmtLsnr, EventType.EVT_CACHE_OBJECT_PUT,
EventType.EVT_CACHE_OBJECT_READ,
EventType.EVT_CACHE_OBJECT_REMOVED);
// Generate cache events.for (int i = 0; i < 20; i++)
cache.put(i, Integer.toString(i));
//java7
Ignite ignite = Ignition.ignite();
// Get an instance of named cache.final IgniteCache<Integer, String> cache = ignite.jcache("cacheName");
// Sample remote filter which only accepts events for keys// that are greater than or equal to 10.
IgnitePredicate<CacheEvent> rmtLsnr = new IgnitePredicate<CacheEvent>() {
@Overridepublicbooleanapply(CacheEvent evt) {
System.out.println("Cache event: " + evt);
int key = evt.key();
return key >= 10;
}
};
// Subscribe to specified cache events occuring on // all nodes that have the specified cache running.
ignite.events(ignite.cluster().forCacheNodes("cacheName")).remoteListen(null, rmtLsnr, EVT_CACHE_OBJECT_PUT, EVT_CACHE_OBJECT_READ, EVT_CACHE_OBJECT_REMOVED);
// Generate cache events.for (int i = 0; i < 20; i++)
cache.put(i, Integer.toString(i));
Ignite ignite = Ignition.ignite();
// Get an instance of named cache.final IgniteCache<Integer, String> cache = ignite.jcache("cacheName");
// Sample remote filter which only accepts events for keys// that are greater than or equal to 10.
IgnitePredicate<CacheEvent> rmtLsnr = new IgnitePredicate<CacheEvent>() {
@Overridepublicbooleanapply(CacheEvent evt) {
System.out.println("Cache event: " + evt);
int key = evt.key();
return key >= 10;
}
};
// Subscribe to cache events occuring on all nodes // that have the specified cache running. // Send notifications in batches of 10.
ignite.events(ignite.cluster().forCacheNodes("cacheName")).remoteListen(
10/*batch size*/, 0/*time intervals*/, false, null, rmtLsnr, EVTS_CACHE);
// Generate cache events.for (int i = 0; i < 20; i++)
cache.put(i, Integer.toString(i));
1. Topic Based Messaging(基于主题的消息)在集群间的节点之间交换自定义消息1.1 概述ignite分布式消息允许基于主题的集群范围内的所有节点间的通信.具有指定消息主题的消息可以分发给已订阅该主题的所有组或者是子组。ignite消息传递是基于发布-订阅形式的,发布者和订阅者通过一个共同的主题连接在一起。当其中一个节点向主题T发送消息a时,它将在所有已订阅T的节点上发布。