복붙노트

[SPRING] 봄 부팅 응용 프로그램에서 작업을 예약하는 가장 좋은 방법은 무엇입니까?

SPRING

봄 부팅 응용 프로그램에서 작업을 예약하는 가장 좋은 방법은 무엇입니까?

현재 Spring-Boot를 기반으로하는 응용 프로그램을 개발 중입니다.

@Scheduled와 같은 주석이 작업을 예약 할 수 있다는 것을 알고 있습니다. 내 응용 프로그램의 사용자가 다른 시간에 메일을 보내고 한 번만 보내려고하기 때문에.

나는 이미 포스트 스케줄링 작업을 읽었다 - 한 번만 실행한다. 그러나 Spring 기반의 응용 프로그램에서는 항상 "새로운"localExecutor입니다.

그런 식으로, 사용자가 이메일을 보내면, 나는 그의 작업을 위해 localExecutor를 "새롭게"해야만한다.

그래서 더 좋은 방법이 있습니까?

해결법

  1. ==============================

    1.quartz-scheduler를 사용하여 다른 시간에 메일을 보내고 한 번만 보내야합니다 .- 코드에 비즈니스 로직으로 넣으십시오. 봄 부츠 - 석영 통합을 참조하십시오. https://github.com/davidkiss/spring-boot-quartz-demo

    quartz-scheduler를 사용하여 다른 시간에 메일을 보내고 한 번만 보내야합니다 .- 코드에 비즈니스 로직으로 넣으십시오. 봄 부츠 - 석영 통합을 참조하십시오. https://github.com/davidkiss/spring-boot-quartz-demo

  2. ==============================

    2.Spring에서 작업을 스케줄하는 가장 간단한 방법은 @Scheduled로 주석 처리 된 메소드를 봄 관리 빈에 작성하는 것이다. 또한 모든 @Configuration 클래스에서 @EnableScheduling이 필요했습니다.

    Spring에서 작업을 스케줄하는 가장 간단한 방법은 @Scheduled로 주석 처리 된 메소드를 봄 관리 빈에 작성하는 것이다. 또한 모든 @Configuration 클래스에서 @EnableScheduling이 필요했습니다.

    봄 튜토리얼

  3. ==============================

    3.@Scheduled 안에 crontab을 사용할 수 있습니다.

    @Scheduled 안에 crontab을 사용할 수 있습니다.

     private AtomicInteger counter = new AtomicInteger(0);
    
    @Scheduled(cron = "*/2 * * * * *")
    public void cronJob() {
        int jobId = counter.incrementAndGet();
        System.out.println("Job " + new Date() + ", jobId: " + jobId);
    }
    
  4. from https://stackoverflow.com/questions/35064563/what-is-best-way-to-schedule-task-in-spring-boot-application by cc-by-sa and MIT license