Spring을 사용하여 사용자 정의 고정 속도로 작업 예약
Spring은 주석을 사용하여 작업을 예약하는 편리한 방법을 제공합니다. 그러나 때로는 고정 비율을 동적으로 설정해야 할 수도 있습니다. 이 기사에서는 Spring의 Trigger 메커니즘을 사용하는 솔루션을 제시합니다.
현재 주석 기반 접근 방식
기본적으로 @Scheduled를fixedRate와 함께 사용하여 실행 사이의 기간을 지정할 수 있습니다. 그러나 이 속도는 정적이며 애플리케이션을 다시 배포하지 않고는 변경할 수 없습니다.
해결책: 트리거 사용
주석에 의존하는 대신 사용자 정의 트리거를 구성할 수 있습니다. 동적으로 계산된 값을 기반으로 다음 실행 시간을 계산하는 것입니다. 이를 달성하는 방법은 다음과 같습니다.
1. 스케줄링 구성 구현
SchedulingConfigurer 인터페이스를 따르는 구성 클래스를 생성합니다. 이 클래스는 기본 스케줄러를 재정의하고 사용자 정의 트리거를 등록합니다.
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { // ... }
2. 트리거 정의
다음 실행 시간을 반환하는 트리거를 구현합니다. 이 예에서는 사용자 환경에 저장된 myRate 속성을 기반으로 다음 시간을 계산합니다.
@Override public Date nextExecutionTime(TriggerContext triggerContext) { Calendar nextExecutionTime = new GregorianCalendar(); Date lastActualExecutionTime = triggerContext.lastActualExecutionTime(); nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date()); nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); //you can get the value from wherever you want return nextExecutionTime.getTime(); }
3. 트리거 등록
예약 구성 클래스에서 작업에 대한 트리거를 등록하세요.
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { // ... taskRegistrar.addTriggerTask( new Runnable() { @Override public void run() { myBean().getSchedule(); } }, new Trigger() { // ... (Your trigger implementation) } ); }
이 접근 방식을 사용하면 예약된 작업에 대한 고정 비율을 동적으로 설정할 수 있습니다. , 애플리케이션을 재배포하지 않고도 조정할 수 있습니다.
위 내용은 봄에 동적으로 조정 가능한 고정 요율로 작업을 예약하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!