SpringBoot प्रतिदिनं: @Scheduled कार्यान्वयनम् एकवारं निष्पादितं भवति यदा सेवा आरभ्यते
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
निर्धारितकार्यस्य विषये वदन् अस्माभिः @Scheduled, Quartz तथा XXL-JOB इत्येतयोः विषये चिन्तनीयम् तथापि केचन एकलसेवाः अथवा लघुपरियोजनाः सुविधायै गतिं च कर्तुं अतुल्यकालिककार्यं कार्यान्वितुं प्रत्यक्षतया @Scheduled इत्यस्य उपयोगं कर्तुं शक्नुवन्ति । अतः अस्य लेखस्य विषयावश्यकता विस्तारिता अस्ति ।
यदा परियोजनायां @Scheduled इत्यस्य उपयोगः भवति तदा परियोजनायाः आरम्भे निर्दिष्टं अतुल्यकालिकं कार्यं कथं पूर्वमेव निष्पादयितुं शक्यते?
1. @Scheduled इत्यस्य विस्तृतव्याख्यानम्
@Scheduled एनोटेशनं कार्यनिष्पादनसमयं लचीलतया नियन्त्रयितुं बहुविधमापदण्डान् समर्थयति ।
- cron: Cron expression, यत् सेकण्ड्, निमेष, घण्टा, दिवस, मास, सप्ताह इत्यादीन् समीचीनतया नियन्त्रयितुं शक्नोति।

- zone: एकं समयक्षेत्रं प्राप्नुमः, यथा एशिया/शंघाई, सामान्यतया वयं यत् समयक्षेत्रं उपयुञ्ज्महे।
- fixedDelay: अन्तिमनिष्पादनसमाप्तिसमयस्य कियत्कालं यावत् पुनः निष्पादितं भविष्यति । यथा @Scheduled(fixedDelay = 5000)
- fixedDelayString: इत्यस्य अर्थः fixedDelay इत्यस्य समानः अस्ति, परन्तु स्ट्रिंग् इत्यस्य रूपेण । केवलं भेदः अस्ति यत् एतत् स्थानधारकाणां समर्थनं करोति, यथा @Scheduled(fixedDelayString = "5000") ।
- fixedRate: निष्पादनसमयस्य अन्तिमप्रारम्भस्य कियत्कालं यावत्, यथा @Scheduled(fixedRate = 5000)
- fixedRateString: इत्यस्य अर्थः fixedRate इत्यस्य समानः अस्ति, परन्तु स्ट्रिंग् इत्यस्य रूपेण । केवलं भेदः अस्ति यत् स्थानधारकाः समर्थिताः सन्ति ।
- initialDelay: प्रथमवारं निष्पादनं कियत्कालं यावत् विलम्बितव्यं उदाहरणार्थं, प्रथमविलम्बः निष्पादनात् पूर्वं 1 सेकण्ड् भवति तदनन्तरं, fixedRate नियमानुसारं प्रत्येकं 5 सेकण्ड् मध्ये निष्पादितं भविष्यति ) ९.
- initialDelayString: इत्यस्य अर्थः initialDelayString इत्यस्य समानः अस्ति, परन्तु स्ट्रिंग् इत्यस्य रूपेण । केवलं भेदः अस्ति यत् स्थानधारकाः समर्थिताः सन्ति ।
2. तर्कस्य कार्यान्वयनम्
1. एकं निर्धारितकार्यतर्कविधिं रचयन्तु
@Component
public class ScheduledTest {
@Scheduled(cron = "* 1 * * * ?")
public void task1() throws Exception{
System.out.println("task1 执行: " + Thread.currentThread() + "-" + DateTime.now());
}
}
2. नूतनं स्टार्टअप निष्पादनवर्गं रचयन्तु
अयं वर्गः मुख्यतया आरम्भे निर्दिष्टं कार्यविधिं मैन्युअल् रूपेण आह्वयति
@Component
public class StartupTasks {
private final ScheduledTest scheduledTasks;
public StartupTasks(ScheduledTest scheduledTasks) {
this.scheduledTasks = scheduledTasks;
}
@PostConstruct
public void startUp() {
try {
System.out.println("服务启动执行任务");
scheduledTasks.task1();
}catch (Exception e){
e.printStackTrace();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
नोट्: स्मर्यतां यत् @EnableScheduling इत्येतत् स्टार्टअप क्लास् मध्ये योजयन्तु येन निर्धारितं कार्यं निष्पादितं भविष्यति अवश्यं, एतत् अस्य लेखस्य तर्कपरीक्षां न प्रभावितं करोति ।
3. परीक्षणस्य परिणामः
सेवा आरब्धस्य अनन्तरं मुद्रणसूचना पश्यन्तु
