2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
आधुनिकसॉफ्टवेयरविकासे अनुसूचितकार्यं अनुप्रयोगस्वचालनस्य परिचालनदक्षतायाः च प्रमुखः घटकः भवति । भवेत् तत् आँकडा-बैकअप, प्रणाली-स्वास्थ्य-परीक्षा, नियमित-रिपोर्ट-जननम्, अथवा उपयोक्तृ-क्रियाकलापैः प्रेरिताः स्वचालित-प्रक्रियाः, निर्धारित-कार्यं अनिवार्य-भूमिकां निर्वहति ते व्यावसायिकतर्कस्य निरन्तरताम्, प्रणाल्याः स्वनिर्वाहक्षमतां च सुनिश्चितयन्ति ।
पारम्परिकविकासप्रतिरूपे, अनुसूचितकार्यं कार्यान्वितुं प्रायः प्रचालनतन्त्रस्य निर्धारितकार्यस्य (यथा Linux इत्यस्य crontab) उपरि अवलम्बनं वा जटिलव्यापारतर्कस्य लेखनस्य आवश्यकता भवति एतेषां पद्धतीनां बहवः असुविधाः सन्ति- १.
लोकप्रियजावा-रूपरेखारूपेण Spring Boot निर्धारितकार्यं कार्यान्वितुं अधिकं सुरुचिपूर्णं एकीकृतं च मार्गं प्रदाति । एतत् विन्यासं सरलीकरोति तथा च समृद्धानि एपिआइ प्रदाति, येन विकासकाः अनुसूचितकार्यकार्यं शीघ्रं अनुप्रयोगेषु एकीकृत्य स्थापयितुं शक्नुवन्ति ।
वसन्त बूट् उत्तीर्णः अभवत्@EnableScheduling
तथा@Scheduled
एनोटेशन्स् इत्यनेन Spring अनुप्रयोगेषु निर्धारितकार्यं लिखितुं विन्यस्तुं च अत्यन्तं सुलभं भवति । तदतिरिक्तं, Spring Boot Spring Task Scheduler इत्यनेन सह एकीकरणं अपि प्रदाति, यत् अधिक उन्नत-निर्धारित-कार्य-आवश्यकतानां समर्थनं प्रदाति ।
Spring Boot इति Pivotal दलेन (अधुना VMware इत्यस्य भागः) विकसितः अस्ति तथा च Spring framework इत्यस्य आधारेण मॉड्यूलर, द्रुतविकासः, परिनियोजनरूपरेखा च अस्ति । अस्य उद्देश्यं Spring अनुप्रयोगानाम् आरम्भिकं सेटअपं विकासं च सरलीकर्तुं पूर्वनिर्धारितविन्यासानां श्रृङ्खलां प्रदातुं विकासकानां विन्यासकार्यं न्यूनीकर्तुं च अस्ति
Spring Boot अनुप्रयोगः माध्यमेन आरभ्यतेSpringApplication.run()
विधिः कार्यान्वितः, स्वयमेव Spring अनुप्रयोगसन्दर्भं निर्माय विन्यस्यति । Spring Boot इत्यनेन अनुप्रयोगानाम् निरीक्षणाय प्रबन्धनाय च आदेशपङ्क्ति-अन्तरफलकं (CLI) तथा Actuator-अन्तबिन्दुः अपि प्रदाति ।
वसन्त बूट् उत्तीर्णः अभवत्spring-boot-starter-parent
निर्भरताप्रबन्धनं प्रदाति तथा च Maven तथा Gradle परियोजनानां विन्यासं सरलीकरोति । एतत् संस्करणसङ्ख्याः निर्भरतापरिधिः च पूर्वनिर्धारयति, येन निर्भरताविग्रहाः संस्करणनियन्त्रणं च प्रबन्धनं सुलभं भवति ।
Spring Boot इत्यस्मिन् सक्रियः मुक्तस्रोतसमुदायः अस्ति यः बहुसंख्याकाः प्लगिन्स् तथा "Starters" प्रदाति येषु विशिष्टकार्यक्षमतायाः निर्माणार्थं आवश्यकाः निर्भरताः सन्ति, यथाspring-boot-starter-web
RESTful अनुप्रयोगानाम् निर्माणार्थम्।
अधः सरलं Spring Boot अनुप्रयोगं निर्मातुं सोपानानि सन्ति, तत्सम्बद्धं च नमूनासङ्केतः:
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
आदेशः चालयति।Spring Boot Spring Framework इत्यस्य प्रतिस्थापनं न भवति, अपितु Spring Framework इत्यस्य आधारेण द्रुतविकासविधिः अस्ति । इदं Spring Framework इत्यस्य सर्वाणि विशेषतानि लचीलतां च निर्वाहयन् Spring अनुप्रयोगानाम् आरम्भस्य द्रुतमार्गं प्रदाति ।
स्प्रिंग बूट् आधुनिकजावा विकासाय विनिर्मितः एकः रूपरेखा अस्ति यत् एतत् विन्यासं सरलीकरोति तथा च बहिः-पेटी-कार्यस्य श्रृङ्खलां प्रदाति, येन विकासकाः आधारभूतसंरचनायाः निर्माणस्य अपेक्षया व्यावसायिकतर्कस्य कार्यान्वयनस्य विषये ध्यानं दातुं शक्नुवन्ति निम्नलिखित अध्यायेषु वयं निर्धारितकार्य्येषु Spring Boot इत्यस्य अनुप्रयोगे गहनतया गमिष्यामः तथा च तस्य विशेषतानां उपयोगः कुशलं विश्वसनीयं च स्वचालितकार्यं निर्मातुं कथं करणीयम् इति दर्शयिष्यामः
निर्धारितकार्यं पूर्वनिर्धारितसमये स्वयमेव निष्पादितः कोडस्य अथवा कार्यक्रमस्य एकः भागः भवति । ते एकवारं वा आवधिकं वा भवितुम् अर्हन्ति तथा च तेषां उपयोगः स्वचालितकार्यं कर्तुं यथा दत्तांशस्य बैकअपं, सूचनां प्रेषयितुं, निर्धारितपरीक्षां कर्तुं इत्यादिषु भवति ।
भवतः प्रणालीं चालयितुं व्यावसायिकप्रक्रियाणां स्वचालितीकरणाय च अनुसूचितकार्यं महत्त्वपूर्णम् अस्ति । ते हस्तहस्तक्षेपं न्यूनीकर्तुं, कार्यक्षमतां वर्धयितुं, कार्याणां समयसापेक्षतां सटीकतां च सुनिश्चितं कर्तुं शक्नुवन्ति ।
java.util.Timer
。@Scheduled
。java.util.Timer
निर्धारितकार्यं कार्यान्वितं कुर्वन्तुअत्र Java standard library इत्यस्य उपयोगेन उदाहरणं दृश्यतेTimer
वर्गेण कार्यान्वितस्य सरलस्य निर्धारितकार्यस्य उदाहरणम् : १.
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Cron expressions इति निर्धारितकार्यस्य निष्पादनसमयं विन्यस्तुं शक्तिशाली उपायः अस्ति । प्रतिदिनं प्रातः १ वादने कार्यं निष्पादयितुं cron व्यञ्जनस्य उदाहरणं निम्नलिखितम् अस्ति ।
0 0 1 * * ?
वसन्त बूट् उत्तीर्णः अभवत्@Scheduled
एनोटेशन्स् निर्धारितकार्यस्य विन्यासं कार्यान्वयनञ्च सरलीकरोति ।अत्र प्रयोगः@Scheduled
एनोटेटेड् Spring Boot निर्धारितकार्य उदाहरणम्:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
टिप्पणी@Scheduled
इदं निर्धारितकार्यस्य कार्यान्वयनस्य सरलीकरणाय Spring द्वारा प्रदत्तं टिप्पणी अस्ति । एतत् भवन्तं सरलटिप्पणीविन्यासद्वारा समये समये निष्पादितविधिनिर्माणं कर्तुं शक्नोति ।
@Scheduled
एनोटेशन विन्यासfixedRate
: द्वयोः कार्यनिष्पादनयोः मध्ये नियतसमयान्तरं (मिलिसेकेण्ड्-मात्रायां) निर्दिशन्तु ।fixedDelay
: अन्तिमकार्यनिष्पादनस्य समाप्तेः अग्रिमकार्यस्य आरम्भस्य च मध्ये नियतसमयान्तरं निर्दिशन्तु ।initialDelay
: प्रथमवारं कार्यस्य निष्पादनात् पूर्वं विलम्बसमयं निर्दिशन्तु ।cron
: कार्यनिष्पादनार्थं समयसूचीं निर्दिष्टुं cron व्यञ्जनानां उपयोगं कुर्वन्तु ।fixedRate
निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रत्येकं 5 सेकेण्ड् मध्ये निष्पादयति:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् पूर्वकार्यस्य निष्पादनं समाप्तस्य १ सेकेण्ड् अनन्तरं निष्पादितं भवति ।
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रथमं अनुप्रयोगस्य आरम्भस्य १० सेकेण्ड् अनन्तरं, ततः प्रत्येकं ५ सेकेण्ड् मध्ये निष्पादितं भवति:
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Cron अभिव्यक्तिः अधिकजटिलसमयसेटिंग्स् प्रदाति, येन भवान् विशिष्टानि निष्पादनसमयानि निर्दिष्टुं शक्नोति । निम्नलिखित उदाहरणं एकं विधिं दर्शयति यत् प्रतिदिनं प्रातः १ वादने निष्पादितं भवति:
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
अनुसूचितकार्यं अपवादं क्षिप्तुं शक्नोति, वसन्तः प्रदाति@Async
एनोटेशनं कार्याणि अतुल्यकालिकरूपेण कर्तुं, तथा च उपयोगं कर्तुं@ExceptionHandler
अपवादं नियन्त्रयितुं ।
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()