2009-01-31 16 views
5

से जावा में असिंक्रोनस प्रोसेसिंग वर्तमान में मेरे पास एक टॉमकैट कंटेनर है - अनुरोधों को सुनकर सर्वलेट चल रहा है। मुझे एक HTTP अनुरोध के परिणाम की आवश्यकता है जो नौकरी कतार में जमा हो, जिसे तब समकालिक रूप से संसाधित किया जाएगा। मैं चाहता हूं कि प्रत्येक "नौकरी" को डीबी में एक पंक्ति में लगातार और विफलता के मामले में वसूली के लिए जारी रखा जाए। मैं बहुत पढ़ रहा हूं। यहां मेरे विकल्प हैं (नोट मुझे सब कुछ के लिए ओपन-सोर्स सामान का उपयोग करना होगा)।जावा में एक सर्वलेट

1) JMS - ActiveMQ का उपयोग करें (लेकिन जो इस मामले में एक और सर्वलेट काम का उपभोक्ता है)

2) है मेरे अनुरोध डीबी में एक पंक्ति बनाने?। मेरे टॉमकैट कंटेनर के अंदर एक अलग सर्वलेट है जो हमेशा चलता है - यह जावा.यूटिल.कॉमकंटेंट में प्रदान की गई क्वार्ट्ज शेड्यूलर या उपयोगिता का उपयोग करता है ताकि लगातार पंक्तियों को नौकरियों के रूप में संसाधित किया जा सके (थ्रेड पूलिंग का उपयोग किया जाता है)।

मैं उत्तरार्द्ध की ओर झुकाव रहा हूँ क्योंकि JMS प्रलेखन को देखकर मुझे एक सिर दर्द देता है और जब तक मैं अपने एक और अधिक मजबूत समाधान जानता हूँ कि मैं इस अपेक्षाकृत जल्दी लागू करने के लिए की जरूरत है। मैं किसी भी मामले में इस सर्वर को तैनात करने के प्रारंभिक दिनों में भारी मात्रा में लोड की उम्मीद नहीं कर रहा हूं।

लोगों का एक बहुत का कहना है कि वसंत अच्छा हो सकता है या तो 1 या 2 के लिए हालांकि मैं उपयोग नहीं किया है वसंत और मैं भी कि यह कैसे इस समस्या को हल करने के लिए का उपयोग शुरू करने में पता नहीं होता। मेरी पूरी परियोजना को फिर से लिखने के बिना कैसे गोता लगाने के लिए कोई संकेतक उपयोगी होगा।

अन्यथा यदि आप विकल्प 1 या 2 पर वजन कर सकते हैं जो उपयोगी भी होगा।

स्पष्टीकरण: अतुल्यकालिक प्रक्रिया एक तीसरी पार्टी वेब साइट को स्क्रैप स्क्रीन करने के लिए होगा, और मूल निवेदक के लिए एक संदेश सूचना भेजते हैं। तीसरी पार्टी की वेबसाइट थोड़ी चक्करदार और धीमी है और यही कारण है कि इसे एक असीमित प्रक्रिया (कई निर्मित प्रयासों में निर्मित) के रूप में संभाला जाएगा। मैं उस साइट से फ़ाइलों को खींच रहा हूं और उन्हें एस 3 में संग्रहीत कर रहा हूं।

उत्तर

4

आपकी क्वार्ट्ज नौकरी को सर्वलेट होने की आवश्यकता नहीं है! आप डीबी में आने वाली नौकरियों को जारी रख सकते हैं और जब आपका मुख्य सर्वलेट शुरू होता है तो क्वार्ट्ज शुरू होता है। क्वार्ट्ज नौकरी एक साधारण POJO हो सकती है और समय-समय पर किसी भी नौकरियों के लिए डीबी की जांच कर सकती है।

हालांकि, मैं वसंत पर एक नज़र डालने का सुझाव दूंगा। सीखना मुश्किल नहीं है और easy to setup within Tomcat। आप Spring reference documentation में बहुत अच्छी जानकारी पा सकते हैं। इसमें क्वार्ट्ज एकीकरण है, जो इसे मैन्युअल रूप से करने से कहीं अधिक आसान है।

+0

मैं भी वसंत दोनों क्वार्ट्ज निर्धारण और JMS संदेश भेजने के लिए सिफारिश करने के लिए। यह कोड को बहुत आसान बना देगा। – kgiannakakis

1

एक उपयुक्त समाधान है जो डिजाइन और प्रोग्रामिंग का एक बहुत करने के लिए आप की जरूरत नहीं होगी वस्तु आप बाद में सर्वलेट में की आवश्यकता होगी बनाने के लिए, और एक बाइट सरणी के लिए यह क्रमानुसार करने है। फिर उसे डेटाबेस में एक BLOB फ़ील्ड में रखें और इसके साथ किया जाए।

फिर अपने प्रसंस्करण धागा बस, सामग्री पढ़ने यह deserialize और ressurrected वस्तु के साथ काम कर सकते हैं।

लेकिन, आप का वर्णन करके सही उत्तर मिल सकता है कि तुम क्या आपके सिस्टम की जरूरत है वास्तव में है :)

+0

एक बहुत अच्छा विचार है। यह शायद मेरे लिए काम करेगा क्योंकि जिस वस्तु को मैं डीबी में संग्रहीत कर रहा हूं, वह केवल तीसरे पक्ष की साइट तक पहुंचने के तरीके के बारे में जानकारी रखता है और इसमें एक अद्वितीय आईडी है ताकि मैं इसे वापस उपयोगकर्ता के पास भेज सकूं। – Ish

संबंधित मुद्दे