Phani
Phani

Reputation: 309

Can we use Shedlock to lock the API calls

In our project we are using ShedLock to prevents concurrent execution of scheduled Spring task. Sometimes we need to call this task manually, so to our front end we added a button which when clicked will call(API) this task. Now can we use ShedLock so that when the user clicks the button multiple times it will only execute the task one time and lock until it is complete.

Upvotes: 2

Views: 3859

Answers (2)

Tomasz Giełbutowicz
Tomasz Giełbutowicz

Reputation: 11

Did You tried to use proxy method?

@EnableSchedulerLock(mode = PROXY_METHOD, defaultLockAtMostFor = "PT30S")

https://github.com/lukas-krecan/ShedLock#scheduled-method-proxy

Upvotes: 0

Lukas
Lukas

Reputation: 14303

From the API method, uou can use the lock manually as described in the documentation

LockingTaskExecutor executor // injected by Spring
...

Instant lockAtMostUntil = Instant.now().plusSeconds(600);
executor.executeWithLock(runnable, new LockConfiguration("lockName", lockAtMostUntil));

Upvotes: 1

Related Questions