repositories {
mavenCentral()
}
dependencies {
compile('com.github.sadstool:redisson-aspect-lock:0.1.2')
compile('org.springframework.boot:spring-boot-starter-aop')
}
RedissonClient bean will be registered with standard spring spring.redis
properties.
@Lockable
public void importantFeature() {
...
}
@Lockable("oneAtTime")
public void importantFeature() {
...
}
@Lockable("oneAtTime")
public void otherDependentFeature() {
...
}
@Lockable("name")
public void importantFeature(@LockKey int someId, @LockKey int otherId) {
...
}
public class Entity {
String field1;
String field2;
...
}
@Lockable(key = "#entity.field1 + '.' + #entity.field2")
public void importantFeature(Entity entity) {
...
}
@Lockable(key = {"#groupId", "#userId"})
public void importantFeature(String groupId, String userId) {
...
}
If the lock is currently held by another process, this method keeps trying to acquire it for up to waitTime
(millis) before giving up and throwing an exception. If the lock is acquired, it is held until method ends or until leaseTime
(millis) have passed since the lock was granted - whichever comes first.
@Lockable(waitTime = 1000, leaseTime = 30000)
public void importantFeature() {
...
}
sadstool:
lock:
waitTime: <defaultWaitTime>
leaseTime: <defaultLeaseTime>
names:
- pattern: <firstNamePattern>
waitTime: <customWaitTime>
leaseTime: <customLeaseTime>
- pattern: <otherNamePattern>
waitTime: <otherWaitTime>
Default waitTime
is 0. Default leaseTime
is 10 seconds.