मुझे स्प्रिंग टाइमर निष्पादन को रद्द करने की आवश्यकता है या कम से कम कुछ स्थितियों के आधार पर निष्पादन आवृत्ति को बदलने की आवश्यकता है। org.springframework.scheduling.quartz.SimpleTriggerBean
और org.springframework.scheduling.timer.ScheduledTimerTask
दोनों का उपयोग कर रहा था। इसे कैसे करना है इसका तरीका नहीं मिल रहा है।स्प्रिंग टाइमर निष्पादन को कैसे रद्द करें
उत्तर
यह अब तक का सबसे अच्छा समाधान नहीं है, लेकिन यदि आप किसी और चीज के साथ नहीं आ सकते हैं तो आप हमेशा एक बुलियन का उपयोग कर सकते हैं जिसे हर बार ईवेंट निकाल दिया जाता है और यदि बूलियन गलत होता है तो रन विधि timertask तुरंत समाप्त करना चाहिए।
नोट: यह वसंत 3.0+
पढ़ें Spring documentation on scheduling tasks के लिए है
इस तरह के एक
TimerManagerTaskScheduler
याThreadPoolTaskScheduler
के रूप में, एकTaskScheduler
सेवा का उपयोग करें।अनुसूची कुछ
TaskScheduler.schedule*()
विधि बुला और लौटनेScheduledFuture
की दुकान से अपने कार्य।जब आप निष्पादन रद्द करना चाहते हैं, तो
ScheduledFuture.cancel()
का आह्वान करें। इससे आपके कार्य के आगे के आमंत्रण बंद हो जाएंगे। इस समय, यदि आप विभिन्न पैरामीटर के साथ अपने कार्य के लिएTaskScheduler.schedule*()
पर कॉल करके चाहते हैं तो आप पुन: निर्धारित कर सकते हैं।
मेरे सेम वसंत xml फ़ाइल में प्रावधान हैं। मैं वहां से कार्यक्षेत्र का उदाहरण कैसे प्राप्त करूं? क्या आप कह रहे हैं कि मुझे अपने जावा कोड में यह सब प्रावधान करने की ज़रूरत है? – BigWonder
बस '
प्रस्तावित समाधान कार्यान्वयन: https://stackoverflow.com/questions/39152599/ –
समाधान org.springframework.scheduling.timer.TimerFactoryBean को एक आईडी असाइन करने के लिए और फिर अनुप्रयोग से सेम को पुनः प्राप्त, घड़ी के लिए यह डाली और उस वस्तु पर विधि रद्द कहते हैं।
'
यही वह है जो मैंने वास्तव में किया था। यह दृष्टिकोण निश्चित रूप से बेहतर नहीं है क्योंकि कुछ शर्त पूरी होने पर मैं फिर से कार्य निष्पादित नहीं करना चाहता हूं। – BigWonder