2016-01-28 3 views
14

Aktualnie rozwijam aplikację opartą na Spring-Boot.Jaki jest najlepszy sposób zaplanowania zadania w aplikacji rozruchu wiosennego?

Wiem, że adnotacja taka jak @Scheduled może planować zadania. Ponieważ użytkownicy w mojej aplikacji chcą wysyłać wiadomości w różnym czasie i wysyłać tylko raz.

Przeczytałem już wpis Spring scheduling task - run only once, , ale to dziwne, zawsze "nowe", lokalne egzaminu w aplikacji na wiosnę.

W ten sposób, raz harmonogram użytkownika wysyłającego e-mail, muszę do "nowego" lokalnego egzaminu dla jego zadania.

Czy są jakieś lepsze sposoby?

Odpowiedz

12

Najprostszym sposobem planowania zadań na wiosnę jest stworzenie metody opisanej przez @Scheduled w wiosennym fasoli zarządzanej. Wymagało również @EnableScheduling w dowolnej klasie @Configuration.

Spring tutorial

+0

Tak, mam już korzystać z tego rodzaju adnotacji dla zadania planowania. Ale w moim stanie, użytkownik chce wysłać swoją pocztę tylko raz w określonym czasie. Więc jeśli używam adnotacji @Schedule, muszę "odpytać", sprawdzić, czy wiadomość powinna być wysyłana co kilka minut lub godzin ..... – Exia

+0

Hope [this] (http://stackoverflow.com/questions/17402112/ Odpowiednio do trwałych kwar-wyzwalaczy w bazie danych) może być pomocna dla ciebie –

+0

Thx. Spróbuję Quartz, a potem ... – Exia

8

Można użyć crontab wewnątrz @Scheduled

private AtomicInteger counter = new AtomicInteger(0); 

@Scheduled(cron = "*/2 * * * * *") 
public void cronJob() { 
    int jobId = counter.incrementAndGet(); 
    System.out.println("Job " + new Date() + ", jobId: " + jobId); 
}