public interface MapLoader<K,V>
IMap.get(Object)
normally returns the value that is available in-memory. If the entry
doesn't exist in-memory, Hazelcast returns null. If a Loader implementation is provided then, instead of returning
null, Hazelcast will attempt to load the unknown entry by calling the implementation's load(Object)
or
loadAll(Collection)
methods. Loaded entries will be placed into the distributed map and they will stay
in-memory until they are explicitly removed or implicitly evicted (if eviction is configured).
MapLoader implementations are executed by a partition thread, therefore care should
be taken not to block the thread with an expensive operation or an operation that may potentially
never return, the partition thread does not time out the operation. Whilst the partition thread is
executing the MapLoader it is unable to respond to requests for data on any other structure that
may reside in the same partition, or to respond to other partitions mapped to the same partition thread. For example
a very slow MapLoader for one map could block a request for data on another map, or even a queue. It is
therefore strongly recommended not to use MapLoader to call across a WAN or to a system which will take
on average longer than a few milliseconds to respond.
MapLoaders should not be used to perform cascading operations on other data structures via a
HazelcastInstance
, the MapLoader should only concern itself with the operation on the assigned map.
If the MapLoader attempts to access another data structure on a different partition to the key used in the MapLoader,
a IllegalThreadStateException
is thrown. A MapLoader can only interact with other data structures
that reside on the same partition.
If a blocked partition thread is called from a Hazelcast Client the caller will also block indefinitely, for example
IMap.get(Object)
. If the same call is made from another cluster member the operation will
eventually timeout with a OperationTimeoutException
.Modifier and Type | Method and Description |
---|---|
V |
load(K key)
Loads the value of a given key.
|
Map<K,V> |
loadAll(Collection<K> keys)
Loads given keys.
|
Iterable<K> |
loadAllKeys()
Loads all of the keys from the store.
|
V load(K key)
key,
- cannot be nullMap<K,V> loadAll(Collection<K> keys)
null
keys.
The returned Map should not contain any null
keys or values.keys
- keys of the values entries to loadIterable<K> loadAllKeys()
Iterable
may return the keys lazily
by loading them in batches. The Iterator
of this Iterable
may implement the
Closeable
interface in which case it will be closed once iteration is over.
This is intended for releasing resources such as closing a JDBC result set.
The returned Iterable should not contain any null
keys.Copyright © 2018 Hazelcast, Inc.. All Rights Reserved.