Class ZookeeperLockRegistry
java.lang.Object
org.springframework.integration.zookeeper.lock.ZookeeperLockRegistry
- All Implemented Interfaces:
DisposableBean
,ExpirableLockRegistry
,LockRegistry
ExpirableLockRegistry
implementation using Zookeeper, or more specifically,
Curator InterProcessMutex
.- Since:
- 4.2
- Author:
- Gary Russell, Artem Bilan, Vedran Pavic, Unseok Kim, Christian Tzolov
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Strategy to convert a lock key (e.g. -
Constructor Summary
ConstructorDescriptionZookeeperLockRegistry
(org.apache.curator.framework.CuratorFramework client) Construct a lock registry using the defaultZookeeperLockRegistry.KeyToPathStrategy
which simple appends the key to '/SpringIntegration-LockRegistry/'.ZookeeperLockRegistry
(org.apache.curator.framework.CuratorFramework client, String root) Construct a lock registry using the defaultZookeeperLockRegistry.KeyToPathStrategy
which simple appends the key to'<root>/'
.ZookeeperLockRegistry
(org.apache.curator.framework.CuratorFramework client, ZookeeperLockRegistry.KeyToPathStrategy keyToPath) Construct a lock registry using the suppliedZookeeperLockRegistry.KeyToPathStrategy
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
destroy()
void
expireUnusedOlderThan
(long age) Remove locks last acquired more than 'age' ago that are not currently locked.Obtain the lock associated with the parameter object.void
setCacheCapacity
(int cacheCapacity) Set the capacity of cached locks.void
setMutexTaskExecutor
(AsyncTaskExecutor mutexTaskExecutor) Set anAsyncTaskExecutor
to use when establishing (and testing) the connection with Zookeeper.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.integration.support.locks.LockRegistry
executeLocked, executeLocked, executeLocked, executeLocked
-
Constructor Details
-
ZookeeperLockRegistry
public ZookeeperLockRegistry(org.apache.curator.framework.CuratorFramework client) Construct a lock registry using the defaultZookeeperLockRegistry.KeyToPathStrategy
which simple appends the key to '/SpringIntegration-LockRegistry/'.- Parameters:
client
- theCuratorFramework
.
-
ZookeeperLockRegistry
Construct a lock registry using the defaultZookeeperLockRegistry.KeyToPathStrategy
which simple appends the key to'<root>/'
.- Parameters:
client
- theCuratorFramework
.root
- the path root (no trailing /).
-
ZookeeperLockRegistry
public ZookeeperLockRegistry(org.apache.curator.framework.CuratorFramework client, ZookeeperLockRegistry.KeyToPathStrategy keyToPath) Construct a lock registry using the suppliedZookeeperLockRegistry.KeyToPathStrategy
.- Parameters:
client
- theCuratorFramework
.keyToPath
- the implementation ofZookeeperLockRegistry.KeyToPathStrategy
.
-
-
Method Details
-
setMutexTaskExecutor
Set anAsyncTaskExecutor
to use when establishing (and testing) the connection with Zookeeper. This must be performed asynchronously so theLock.tryLock(long, TimeUnit)
contract can be honored. While an executor is used internally, an external executor may be required in some environments, for example those that require the use of aWorkManagerTaskExecutor
.- Parameters:
mutexTaskExecutor
- the executor.- Since:
- 4.2.10
-
setCacheCapacity
public void setCacheCapacity(int cacheCapacity) Set the capacity of cached locks.- Parameters:
cacheCapacity
- The capacity of cached lock, (default 30_000).- Since:
- 5.5.6
-
obtain
Description copied from interface:LockRegistry
Obtain the lock associated with the parameter object.- Specified by:
obtain
in interfaceLockRegistry
- Parameters:
lockKey
- The object with which the lock is associated.- Returns:
- The associated lock.
-
expireUnusedOlderThan
public void expireUnusedOlderThan(long age) Remove locks last acquired more than 'age' ago that are not currently locked. Expiry is not supported if theZookeeperLockRegistry.KeyToPathStrategy
is bounded (returns a finite number of paths). With such aZookeeperLockRegistry.KeyToPathStrategy
, the overhead of tracking when a lock is obtained is avoided.- Specified by:
expireUnusedOlderThan
in interfaceExpirableLockRegistry
- Parameters:
age
- the time since the lock was last obtained.
-
destroy
public void destroy()- Specified by:
destroy
in interfaceDisposableBean
-