Artifact | Version |
---|---|
lock-provider-api | |
lock-provider-reentrant | |
lock-provider-hazelcast-3x | |
lock-provider-hazelcast-4x | |
lock-provider-hazelcast-5x | |
lock-provider-redis | |
lock-provider-zookeeper |
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-reentrant</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-hazelcast-3x</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-hazelcast-4x</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-hazelcast-5x</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-redis</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.inomera.telco.commons</groupId>
<artifactId>lock-provider-zookeeper</artifactId>
<version>2.0.0</version>
</dependency>
implementation 'com.inomera.telco.commons:lock-provider-reentrant:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-3x:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-4x:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-5x:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-redis:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-zookeeper:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-3x:2.0.0'
import com.inomera.telco.commons.lock.hazelcast.HazelcastLockProvider;
final LockProvider lockProvider = new HazelcastLockProvider(hazelcastInstance);
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-4x:2.0.0'
implementation 'com.inomera.telco.commons:lock-provider-hazelcast-5x:2.0.0'
import com.inomera.telco.commons.lock.hazelcast.HazelcastLockProvider;
final LockProvider lockProvider = new HazelcastLockProvider(hazelcastInstance);
implementation 'com.inomera.telco.commons:lock-provider-redis:2.0.0'
import com.inomera.telco.commons.lock.redis.RedisLockProvider;
final LockProvider lockProvider = new RedisLockProvider(redissonClient);
implementation 'com.inomera.telco.commons:lock-provider-zookeeper:2.0.0'
import com.inomera.telco.commons.lock.zookeeper.ZookeeperLockProvider;
final LockProvider lockProvider = new ZookeeperLockProvider(curatorClient);
implementation 'com.inomera.telco.commons:lock-provider-reentrant:2.0.0'
import com.inomera.telco.commons.lock.reentrant.LocalReentrantLockProvider;
final LockProvider lockProvider = new LocalReentrantLockProvider();
Returns empty optional if lock is not acquired.
final Optional<Locked> maybeLocked = lockProvider.tryLock("lockKey");
maybeLocked.ifPresent(locked -> {
try {
// Do things in lock
} finally {
locked.unlock();
}
});
Returns empty optional if lock is not acquired.
final Optional<Locked> maybeLocked = lockProvider.tryLock("lockMapName", "lockKey");
maybeLocked.ifPresent(locked -> {
try {
// Do things in lock
} finally {
locked.unlock();
}
});
lockProvider.executeInTryLock("lockKey", () -> {
// Do stuff in lock
});
lockProvider.executeInTryLock("lockMapName", "lockKey", () -> {
// Do stuff in lock
});
Returns null if lock is not acquired.
final String result = lockProvider.executeInTryLock("lockKey", () -> {
// Do stuff in lock
return "result";
});
Returns null if lock is not acquired.
final String result = lockProvider.executeInTryLock("lockMapName", "lockKey", () -> {
// Do stuff in lock
return "result";
});
final Locked locked = lockProvider.lock("lockKey");
try {
// Do stuff in lock
} finally {
locked.unlock();
}
final Locked locked = lockProvider.lock("lockMapName", "lockKey");
try {
// Do stuff in lock
} finally {
locked.unlock();
}
lockProvider.executeInLock("lockKey", () -> {
// Do stuff in lock
});
lockProvider.executeInLock("lockMapName", "lockKey", () -> {
// Do stuff in lock
});
final String result = lockProvider.executeInLock("lockKey", () -> {
// Do stuff in lock
return "result";
});
final String result = lockProvider.executeInLock("lockMapName", "lockKey", () -> {
// Do stuff in lock
return "result";
});
To publish a version to maven repository, you should create a gradle.properties file in the root directory of this project.
The file is: /path-to-project/gradle.properties
This file is included in .gitignore file. You should not commit it since it contains sensitive information.
Add credentials for maven repository to gradle.properties
file.
Example gradle.properties
file:
mavenReleaseUrl=https://oss.sonatype.org/service/local/staging/deploy/maven2/
mavenSnapshotUrl=https://oss.sonatype.org/content/repositories/snapshots/
mavenUsername=************************
mavenPassword=************************
mavenPackageGroup=com.inomera
signing.keyId=******
signing.password=******
signing.secretKeyRingFile=******.gpg
Then you need to invoke release.sh
script in the project root directory.
# When the latest VERSION is 1.1.1
./release.sh --release-type patch --project $projectName
# New version is 1.1.2
./release.sh --release-type minor --project $projectName
# New version is 1.2.0
./release.sh --release-type major --project $projectName
# New version is 2.0.0
To publish a snapshot release, use --snapshot
flag as follows:
./release.sh --release-type latest --project $projectName --snapshot
Please change the version wisely.
Redisson is more appropriate for our interface and also more mature according to the Jedis.
redisson github : https://github.com/redisson
CuratorFramework is more appropriate for our interface and also more mature according to the Zookeper Java client.
curator github : https://github.com/apache/curator