Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Schedule task for specific time at runtime

Does anyone has any experience with task scheduling in Spring? I understand you can schedule for a fixed time period or interval using annotations https://spring.io/guides/gs/scheduling-tasks/ But I was wondering if anyone knows how to do this using dynamic user input at runtime. For example a user schedules an email to be sent at 5:02pm exactly, is there a way add a new task dynamically using that as a time?

like image 256
stewartie4 Avatar asked Dec 11 '25 04:12

stewartie4


1 Answers

  1. Collect user input and store it in DB as date/time, for example, we can call that value as NEXT_SEND_TIME.

2.Annotate mail sending method with @Scheduled as below, this method will be called automatically( by spring) for every 5 seconds (5000 ms).

3.Get current time and compare it with NEXT_SEND_TIME.

4.If current time is greater than NEXT_SEND_TIME , then trigger email for that user.

@Scheduled(fixedDelay=5000)
public void sendMail() {
    // do step 3 & 4 here
}
like image 179
Sundararaj Govindasamy Avatar answered Dec 12 '25 17:12

Sundararaj Govindasamy