반응형
봄에 프로필별 @예약된 작업을 활성화하는 방법은 무엇입니까?
특정 프로필에서만 예약된 작업을 활성화하려면 어떻게 해야 합니까?
의사 코드:
@Scheduled(cron = "${job.cron}")
@Profile("prod")
public void runJob() {
}
그게 가능한가요?
프로필당 하나의 빈이 있어야 합니다.
@Component
@Profile("prod")
public class ProdJob {
@Scheduled(cron = "${job.cron}")
public void runJob() {
}
}
@Component
@Profile("beta")
public class BetaJob {
@Scheduled(cron = "${job.cron}")
public void runJob() {
}
}
다음과 같은 방법을 사용하여 이 작업을 수행할 수 있습니다.이미 그랬던 것처럼 콜론을 추가한 다음 속성을 찾을 수 없는 경우 선택해야 하는 기본값을 추가합니다.여기서 '-'를 cron disable 식으로 사용합니다.
@Scheduled(cron = "${job.cron:-}")
public void runJob() {
}
그런 다음 원하는 프로파일에 cron 식을 정의합니다(예: 속성 파일 사용).
application-prod.properties 콘텐츠는 다음과 같습니다.
job.cron=*/30 * * * * *
여기서 prod 프로필의 경우 30초마다 시작되고 다른 모든 경우에는 꺼집니다.
저는 스프링 부트 버전 2.3.7을 사용하고 있으며 이 문제에 대한 해결책은 당신이 제공한 유사 코드와 동일합니다.당신은 그들의 팀에 영감을 주었습니다 :-).
// Enable sceduling
@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("my.main.package-Scheduler-");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}
// A scheduled job that runs only when profile "prod" is enabled
@Component
@Profile("prod")
@NoArgsConstructor
class ExpirationNotificationScheduler {
// Just for test, run each 10th second or each minute
@Scheduled(cron = "10 * * * * *") // second, minute, hour, day of month, month, day(s) of week
public void notifyExpiredAccounts() {
System.out.println("Yes, I am a scheduled job.");
}
}
언급URL : https://stackoverflow.com/questions/28782694/how-to-enable-scheduled-jobs-by-profile-in-spring
반응형
'programing' 카테고리의 다른 글
mysql group by hour - 잘못된 결과를 피하는 방법 (0) | 2023.08.09 |
---|---|
ASP.Net에서 CSV 파일 생성 (0) | 2023.08.09 |
Windows에 Python 패키지를 설치하려면 어떻게 해야 합니까? (0) | 2023.08.09 |
NSString: IsEqual 대 IsEqualToString (0) | 2023.08.09 |
출력 시 EPLUS 오류가 발생합니다.응답에 대한 XLSX (0) | 2023.08.09 |