Package org.swisspush.gateleen.core.lock
Interface Lock
-
- All Known Implementing Classes:
RedisBasedLock
public interface LockCluster wide locks allow you to obtain exclusive locks across the cluster. This is useful when you want to do something or access a resource on only one node of a cluster at any one time.- Author:
- https://github.com/mcweba [Marc-Andre Weber]
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description io.vertx.core.Future<Boolean>acquireLock(String lock, String token, long lockExpiryMs)Try to acquire a lock.io.vertx.core.Future<Boolean>releaseLock(String lock, String token)Try to release a lock.
-
-
-
Method Detail
-
acquireLock
io.vertx.core.Future<Boolean> acquireLock(String lock, String token, long lockExpiryMs)
Try to acquire a lock. Thetokenparameter value must be unique across all clients and all lock requests. ThelockExpiryMsparameter defines the expiry of the lock. When not manually released, the lock will be released automatically when expired.- Parameters:
lock- The name of the lock to acquiretoken- A unique token to define the owner of the locklockExpiryMs- The lock expiry in milliseconds- Returns:
- Returns a Future holding a Boolean value whether the lock could be successfully acquired or not
-
releaseLock
io.vertx.core.Future<Boolean> releaseLock(String lock, String token)
Try to release a lock. Thetokenparameter value is used to verify that only the owner of the lock can release it. Thetokenparameter value also prevents the original owner of an already expired lock to release a lock which has been acquired by another client.- Parameters:
lock- The name of the lock to releasetoken- A unique token to verify if the owner of the lock tries to release the lock- Returns:
- Returns a Promise holding a Boolean value whether the lock could be sucsessfully released or not
-
-