All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.swisspush.redisques.lock.Lock Maven / Gradle / Ivy

There is a newer version: 4.1.11
Show newest version
package org.swisspush.redisques.lock;

import io.vertx.core.Future;

/**
 * Cluster 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]
 */
public interface Lock {
    /**
     * Try to acquire a lock.
     * The token parameter value must be unique across all clients and all lock requests. The lockExpiryMs
     * parameter defines the expiry of the lock.
     * When not manually released, the lock will be released automatically when expired.
     *
     * @param lock The name of the lock to acquire
     * @param token A unique token to define the owner of the lock
     * @param lockExpiryMs The lock expiry in milliseconds
     * @return Returns a Future holding a Boolean value whether the lock could be successfully acquired or not
     */
    Future acquireLock(String lock, String token, long lockExpiryMs);

    /**
     * Try to release a lock.
     * The token parameter value is used to verify that only the owner of the lock can release it.
     * The token parameter value also prevents the original owner of an already expired lock to release a lock
     * which has been acquired by another client.
     *
     * @param lock The name of the lock to release
     * @param token A unique token to verify if the owner of the lock tries to release the lock
     * @return Returns a Promise holding a Boolean value whether the lock could be successfully released or not
     */
    Future releaseLock(String lock, String token);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy