꽤 일반적인 스프링 부트 (1.3.5) 응용 프로그램이 있습니다.스프링 부트, 예약 된 작업, 이중 호출
기본 응용 프로그램 진입 점에 시도 @EnableScheduling
(그리고 @Configuration
주석 클래스 사용 예약. @Scheduled
방법 (단순 fixedDelay 일정을 간단한 클래스를 만든
).
예약 된 작업을 두 번 실행 (항상) .
지금까지 수집 한 것과, 두 개의 컨텍스트 두 번 내 콩을 따기 thusly 히로드 및되고 아마도 때문이다. 나는 수정 /이 더블 execu을 방지 어떻게 그래서 좋아. 모든 설정은 기본적으로 숨겨진 봄 부팅 마법이기 때문에?
프레임 워크 버전 :
- 봄 부팅 1.3.5
- 봄 클라우드 척 SR1
주요 응용 프로그램 :
내 작업 클래스 (HookCreateRequest리스트에 끌어@SpringBootApplication
@EnableDiscoveryClient
@EnableAsync
@EnableCircuitBreaker
public class AlertsApplication {
public static void main(final String[] args) {
SpringApplication.run(AlertsApplication.class, args);
}
}
application.yml
에서 - 나는 현재 관련성이 있다고 생각하지 않는다. 필요한 경우 제공 가능) :
@ConditionalOnProperty(name = "init.runner", havingValue = "InitRunner")
@ConfigurationProperties(prefix = "webhook")
public class InitRunner /*implements CommandLineRunner*/ {
private final List<HookCreateRequest> receivers = new ArrayList<>();
@Autowired
private WebHookService hookService;
@Scheduled (fixedRate = 300000)
public void run() throws Exception {
getReceivers().stream().forEach(item -> {
log.debug("Request : {}", item);
hookService.create(item);
});
}
public List<HookCreateRequest> getReceivers() {
return receivers;
}
}
xml 구성이 없습니다. 기타 관련성이 있는지 확실하지 않은 경우
EDIT 2016년 7월 4일
실행시는 I (I는 두 개의 서로 다른 인스턴스가 생성되고 있다고 의심) 출력 스케줄 인스턴스를 수정했다. 그러나 로그는 작업 객체의 동일한 인스턴스임을 나타냅니다. logs : 15:01:16.170 DEBUG - scheduled.ScheduleHookRecreation - Schedule task running: [email protected] ...task stuff happening ...first run completes, then: 15:01:39.050 DEBUG - scheduled.ScheduleHookRecreation - Schedule task running: [email protected]
그래서 동일한 작업 인스턴스 (@705a651b
)로 보입니다. 왜 달콤한 것들의 이름으로 두 번이나 실행됩니까?
EDIT 2016년 7월 5일
난 단지 일부 기록 출력과, 예정된 방식을 수행하는 클래스에 @PostConstruct
방법을 추가했다. I는 @PostConstruct
메소드가 호출되고 있음을 확인할 수함으로써 두 번 - 콩이 두 번 집어 들었다는 것을 확인하는 것으로 보이는데, 아마도 콩이 두 번 스케쥴러에 공급된다는 의미 일 것이다. 어떻게 이것을 막는가?
제공하신 정보에서 매우 어렵습니다. 문제의 [최소한의 완전하고 검증 가능한 예] (/ help/mcve)를 공유 할 수 있습니까? –
@AndyWilkinson 공정한 - 정보 및 코드 스 니펫을 추가하는 편집 된 질문입니다. 필요에 따라 공급하는 것 이상으로 관련성이있는 것이 무엇인지 모릅니다. – demaniak