BarrierListener
The given listener will be called after cache's default listener will be completed.BarrierListener
The given listener will be called after cache's default listener will be completed.ObjectPool for high performance and scalability
Example of use:
See org.glassfish.grizzly.memcached.pool.BaseObjectPoolTest's test codes
This class should be thread-safe.TCPNIOTransport.createObject or will be a previously idle object and
then validated with validateObject.createObject or will be a previously idle object and
then validated with validateObject.PoolableObjectFactory.validateObject(K, V) before returning a borrowed object to the user
Default is false.Buffer, which has original message origin, original object type BufferWrapper.BufferType and converted Buffer
Messages which should be sent to the remote peer via network will be always converted into Buffer instance by BufferWrapper.wrap(T, org.glassfish.grizzly.memory.MemoryManager),
and the received packet will be always restored to its original messages by BufferWrapper.unwrap(org.glassfish.grizzly.Buffer, org.glassfish.grizzly.memcached.BufferWrapper.BufferType, org.glassfish.grizzly.memory.MemoryManager)Cache.Cache.GrizzlyMemcachedCacheManager instance with this builder's propertiesObjectPool instance with this builder's propertiesCache instanceBarrierListener implementation for synchronizing the cache server list among all clients which have joined the same zookeeper servernoReply parameter means memcached's quiet command such as GetQ, SetQ and etc...Watcher.Event.KeeperState#SyncConnected from the zookeeper server.factory until pool's minimum size, and then place them in the idle object pool
createAllMinObjects is useful for "pre-loading" a pool with idle objects.factory until pool's minimum size, and then place them in the idle object pool
createAllMinObjects is useful for "pre-loading" a pool with idle objects.CacheBuilder for the named cache to be managed by this cache manager.CacheBuilder for the named cache to be managed by this cache manager.key
After destroying, ObjectPool.borrowObject(K, long) with the given key will be failed.createAllMinObjects or borrowObject,
returnObject or removeObject or removeAllObjects after invoking
this method on a pool will cause them to throw an IllegalStateException.key
After destroying, ObjectPool.borrowObject(K, long) with the given key will be failed.createAllMinObjects or borrowObject,
returnObject or removeObject or removeAllObjects after invoking
this method on a pool will cause them to throw an IllegalStateException.disposable is true.SocketAddress instances.MemcachedCache based on Grizzly
Basically, this class use BaseObjectPool for pooling connections of the memcached server
and ConsistentHashStore for selecting the memcached server corresponding to the given key.CacheManager based on Grizzly
This cache manager has a key(String cache name)/value(GrizzlyMemcachedCache map for retrieving caches.valueIOStrategy will be passed to TCPNIOTransport.Integer.MAX_VALUE.Integer.MAX_VALUEFilter implementation for memcached
This filter has an unbounded BlockingQueue per a connection for storing user's request.response and responseStatus will be set by the filter when the response will be received.MemcachedResponse.setDecodedKey(org.glassfish.grizzly.Buffer, int, int, org.glassfish.grizzly.memory.MemoryManager) and MemcachedResponse.setDecodedValue(org.glassfish.grizzly.Buffer, int, int, org.glassfish.grizzly.memory.MemoryManager).PoolableObjectFactory.createObject(K)
or there are no valid instances which used to be tested by PoolableObjectFactory.validateObject(K, V)borrowObject, returnObject and removeObject.ObjectPool
By contract, when an ObjectPool delegates to a PoolableObjectFactory,
createObject is called whenever a new instance is needed.ConsistentHashStore.add(T)keykeyvalue should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.BarrierListener
The given listener will be called after cache's default listener will be completed.BarrierListener
The given listener will be called after cache's default listener will be completed.value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.PoolableObjectFactory.validateObject(K, V) before returning a borrowed object to the pool
Default is false.TCPNIOTransport.cacheServerList
cacheServerList could be comma separated host:port pairs, each corresponding to a memcached server.cacheServerList
cacheServerList could be comma separated host:port pairs, each corresponding to a memcached server.GrizzlyTransport
If this is not set or set to be null, GrizzlyMemcachedCacheManager will create a default transport.ZKClient.registerBarrier(java.lang.String, org.glassfish.grizzly.memcached.zookeeper.BarrierListener, byte[])bufferbufferExecutorService will be passed to TCPNIOTransport.BufferWrapper instance from original objectZooKeeperConfig for synchronizing cache server list among cache clientsfinal GrizzlyMemcachedCacheManager.Builder managerBuilder = new GrizzlyMemcachedCacheManager.Builder();
// setup zookeeper server
final ZooKeeperConfig zkConfig = ZooKeeperConfig.create("cache-manager", DEFAULT_ZOOKEEPER_ADDRESS);
zkConfig.setRootPath(ROOT);
zkConfig.setConnectTimeoutInMillis(3000);
zkConfig.setSessionTimeoutInMillis(30000);
zkConfig.setCommitDelayTimeInSecs(2);
managerBuilder.zooKeeperConfig(zkConfig);
// create a cache manager
final GrizzlyMemcachedCacheManager manager = managerBuilder.build();
final GrizzlyMemcachedCache.Builder<String, String> cacheBuilder = manager.createCacheBuilder("user");
// setup memcached servers
final Set<SocketAddress> memcachedServers = new HashSet<SocketAddress>();
memcachedServers.add(MEMCACHED_ADDRESS1);
memcachedServers.add(MEMCACHED_ADDRESS2);
cacheBuilder.servers(memcachedServers);
// create a user cache
final GrizzlyMemcachedCache<String, String> cache = cacheBuilder.build();
// ...
// clean
manager.removeCache("user");
manager.shutdown();
final GrizzlyMemcachedCacheManager.Builder managerBuilder = new GrizzlyMemcachedCacheManager.Builder();
// setup zookeeper server
final ZooKeeperConfig zkConfig = ZooKeeperConfig.create("cache-manager", DEFAULT_ZOOKEEPER_ADDRESS);
zkConfig.setRootPath(ROOT);
zkConfig.setConnectTimeoutInMillis(3000);
zkConfig.setSessionTimeoutInMillis(30000);
zkConfig.setCommitDelayTimeInSecs(2);
managerBuilder.zooKeeperConfig(zkConfig);
// create a cache manager
final GrizzlyMemcachedCacheManager manager = managerBuilder.build();
final GrizzlyMemcachedCache.Builder<String, String> cacheBuilder = manager.createCacheBuilder("user");
// setup memcached servers
final Set<SocketAddress> memcachedServers = new HashSet<SocketAddress>();
memcachedServers.add(MEMCACHED_ADDRESS1);
memcachedServers.add(MEMCACHED_ADDRESS2);
cacheBuilder.servers(memcachedServers);
// create a user cache
final GrizzlyMemcachedCache<String, String> cache = cacheBuilder.build();
// ZooKeeperSupportCache's basic operations
if (cache.isZooKeeperSupported()) {
final String serverListPath = cache.getZooKeeperServerListPath();
final String serverList = cache.getCurrentServerListFromZooKeeper();
cache.setCurrentServerListOfZooKeeper("localhost:11211,localhost:11212");
}
// ...
// clean
manager.removeCache("user");
manager.shutdown();
Copyright © 2015 Project Grizzly. All Rights Reserved.