2011-01-25 18 views
7

के बिना क्वार्ट्ज शेड्यूलर लगातार बना रहा है हम MongoDB के आसपास एक ऐप बना रहे हैं, और समय-समय पर क्रॉन जैसी नौकरियां चलाने की आवश्यकता है। मैंने इस तरह की चीज के लिए Quartz का उपयोग किया है जब परियोजनाएं जेडीबीसी के साथ आरडीबीएमएस के आसपास आधारित थीं।जेडीबीसी

के बाद से हम पहले से ही इस परियोजना में हमारे मुख्य डेटासंग्रह के लिए MongoDB उपयोग कर रहे हैं, मैं क्वार्ट्ज नौकरियों लागू करने के लिए बस एक आरडीबीएमएस परिचय नहीं करना चाहते, लेकिन वहाँ MongoDB के लिए JobStore implementatiom किसी भी तरह का होने के लिए प्रतीत नहीं होता।

क्या कोई भी मोंगोडीबी के साथ क्वार्ट्ज वापस करने या क्वार्ट्ज के लिए एक साधारण विकल्प की सिफारिश कर सकता है? मेरी ज़रूरतें काफी सरल हैं (कुछ प्रकार की कॉन्फ़िगरेशन के साथ विभिन्न जावा नौकरियां चलाएं, ला ला क्रॉन)।

+0

मुझे ऐसे किसी भी उत्पाद की जानकारी नहीं है, लेकिन फिर मैंने आज पहले क्वार्ट्ज के बारे में कभी नहीं सुना है। यह देखते हुए कि एक स्पष्ट [जॉबस्टोर] (http://www.docjar.com/docs/api/org/quartz/spi/JobStore.html) इंटरफ़ेस है, ऐसा लगता है कि आप MongoDB जावा ड्राइवर का उपयोग करने और कार्यान्वित करने में सक्षम होना चाहिए ऐसी दुकान "मुफ़्त और काम करने" के रूप में उतना अच्छा नहीं है, लेकिन मुझे यकीन नहीं है कि आपको इस समय इस तरह की चीज़ मिल जाएगी। –

+0

जॉबस्टोर इंटरफ़ेस को कार्यान्वित करना क्वार्ट्ज के लिए वैकल्पिक है - आपको केवल तभी आवश्यकता है जब आप क्लस्टर वातावरण में चल रहे हों (या) आप लगातार नौकरी गुणों का उपयोग करें जिन्हें JVM पुनरारंभ के बीच संरक्षित करने की आवश्यकता है। अन्यथा, बस शेड्यूलर को तुरंत चालू करें और स्टार्टअप पर नौकरियां जोड़ें। –

उत्तर

3

हम वसंत के साथ क्वार्ट्ज चलाते हैं और यह केवल एक एक्सएमएल फाइल है जो नौकरियों को परिभाषित और क्रॉन एक्सप्रेशन के साथ है।

वसंत में एक नौकरी घोषित:

<bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="concurrent" value="false"/> 
    <property name="targetBeanName" value="myBean"/> 
    <property name="targetMethod" value="myScheduledMethod"/> 
    </bean> 

    <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="myJob"/> 
    <!-- every 30s --> 
    <property name="cronExpression" value="0/30 * * * * ?"/> 
    </bean> 

क्वार्ट्ज तारों:

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
     <!-- List of batch jobs to be fed to the scheduler. --> 
     <list> 
     <ref bean="myTrigger"/> 
     </list> 
    </property> 
    </bean> 

भागो इसके साथ:

import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class App 
{ 
    public static void main(String[] args) throws Exception 
    { 
     new ClassPathXmlApplicationContext("jobs-context.xml"); 
    } 
} 
+0

यह जो मैंने तय किया है उतना ही कम है। हम वसंत का उपयोग नहीं कर रहे हैं, इसलिए मैं यहां quartz -properties को quartz-config.xml फ़ाइल पर इंगित करता हूं, जैसा कि यहां वर्णित है: http://www.openscope.net/2010/02/05/quartz-scheduled-jobs/ सही दिशा में मुझे इंगित करने के लिए धन्यवाद। –

+6

यह सिर्फ एम्बेडेड चल रहा है, है ना? जो कुछ नौकरियों के लिए ठीक है, लेकिन लगातार नौकरियों के लिए, विशेष रूप से गैर-पुनरावर्ती वाले लोगों के लिए, आप एक सतत स्टोर का समर्थन करना चाहते हैं ताकि आप टेक-डाउन इत्यादि से बच सकें। – Eelco

8

मैं क्वार्ट्ज जो यहाँ स्थित है के लिए एक MongoDB JobStore लिखा है: https://github.com/mulesoft/quartz-mongodb यह सबकुछ का समर्थन नहीं करता है, लेकिन यह उपयोग के मामलों के समूह के लिए काम करता है।

+0

यह शानदार दान है। इसे साझा करने के लिए बहुत बहुत धन्यवाद। – Eelco

+0

यह बहुत दिलचस्प लग रहा है। धन्यवाद। – GreenKiwi

+0

क्या यह कार्यान्वयन पुनरावर्ती अलार्म का समर्थन करता है? क्या यह स्वचालित रूप से डीबी से ट्रिगर्स को फिर से लोड करेगा और उन्हें एप्लिकेशन पुनरारंभ पर शेड्यूल करेगा? – Gopinath