build.gradle:
- shedlock-spring 5.16.0
- shedlock-provider-redis-spring 5.16.0
TastebyApplication: @EnableSchedulerLock(defaultLockAtMostFor=PT15M)
ShedLockConfig 신규: RedisLockProvider Bean (in-cluster Redis 재사용)
DaemonScheduler.run:
- @SchedulerLock(name="daemon-runner", lockAtMostFor=PT15M, lockAtLeastFor=PT30S)
- 멀티 파드 환경(RollingUpdate 등)에서 한 인스턴스만 실행
- Redis 키: lock:daemon-runner
설계서: docs/design/335-daemon-distributed-lock/README.md (commit c88cb6a)
Refs: #335 (Developer 단계)
23 lines
791 B
Java
23 lines
791 B
Java
package com.tasteby.config;
|
|
|
|
import net.javacrumbs.shedlock.core.LockProvider;
|
|
import net.javacrumbs.shedlock.provider.redis.spring.RedisLockProvider;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
|
|
|
/**
|
|
* #335 — ShedLock LockProvider (Redis 기반).
|
|
*
|
|
* 데몬 스케줄러가 다중 파드 환경에서 한 번에 하나만 실행되도록 보장.
|
|
* key prefix는 ShedLock 기본 ("lock:")을 사용 → Redis 키는 `lock:daemon-runner`.
|
|
*/
|
|
@Configuration
|
|
public class ShedLockConfig {
|
|
|
|
@Bean
|
|
public LockProvider lockProvider(RedisConnectionFactory connectionFactory) {
|
|
return new RedisLockProvider(connectionFactory);
|
|
}
|
|
}
|