/ ऊंट-फ़ाइल घटक का उपयोग करके एक ही माउंटेड फ़ोल्डर पर एकाधिक उदाहरण लेखन - अपाचे-ऊँट, ओस्गी, smb, jbossiseuse

ऊंट-फ़ाइल घटक का उपयोग कर एक ही घुड़सवार फ़ोल्डर पर एकाधिक उदाहरण लेखन - अपाचे-ऊंट, ओएसजीआई, एसएमबी, जेबॉसफ्यूज

हमें सिंगल फाइल का उपयोग करके लिखना होगाऊंट इंटरफेस के कई उदाहरण एक साथ चल रहे हैं। फाइल विंडोज़ शेयर्ड फाइल सिस्टम पर है जिसे SMB का उपयोग करके JBoss सर्वर पर लगाया गया है।

हम प्रत्येक फ़ाइल से स्थानीय फ़ाइल के रूप में फ़ाइल लिखने के लिए ऊंट फ़ाइल घटक का उपयोग कर रहे हैं। नीचे ऊंट संदर्भ में समापन बिंदु URI है

file:/fuse/server/location/proc?fileName=abc.csv&fileExist=Append

जब फ़ाइल एकल आवृत्ति से हो रही हो, तो फ़ाइल जनरेट की कोई समस्या नहीं है, लेकिन कई उदाहरणों के मामले में यह रद्दी वर्णों को यादृच्छिक लाइनों पर फ़ाइल में जोड़ देता है।

हम उपयोग कर रहे हैं JBoss फ्यूज 6.0.0 और इंटरफ़ेस का उपयोग करके लिखा गया है ऊँट 2.10 संस्करण।

इसे कैसे सुधारा जा सकता है? क्या यह SMB माउंट के साथ समस्या है या इंटरफ़ेस को इसे संभालने की आवश्यकता है।

उत्तर:

जवाब के लिए 0 № 1

मैं प्रासंगिक ऊंट घटक के स्रोत कोड पर एक नज़र था (https://github.com/apache/camel/tree/master/camel-core/src/main/java/org/apache/camel/component/file) और किसी भी JVMs से एकल फ़ाइल के समवर्ती उपयोग के लिए किसी भी तरह से निर्मित नहीं किया गया है। एकल JVM से समवर्ती पहुँच को हालांकि नियंत्रित किया जाता है।

मुझे लगता है कि आपकी आवश्यकता को संबोधित करने के लिए आपके पास दो मूल विकल्प हैं:

  1. किसी एकल फ़ाइल के लिए साझा पहुँच का समर्थन करने के लिए कुछ कोड लिखें। ऊंट फ़ाइल घटक ऐसा लगता है कि यह विस्तार को ध्यान में रखकर बनाया गया था, या आप ऐसा करने के लिए एक स्टैंडअलोन घटक बना सकते हैं।
  2. जैसा कि @Namphibian आपके लेखन को क्रमबद्ध करने के लिए कुछ कतारबद्ध प्रणाली का उपयोग करने का सुझाव देता है (हालांकि मुझे नहीं लगता कि यह seda काम करेगा, क्योंकि यह JVMS नहीं है।

मेरा समाधान ActiveMQ का उपयोग करना होगा। आपके एप्लिकेशन का प्रत्येक उदाहरण एकल, साझा कतार में संदेश भेजेगा। कुछ अन्य प्रक्रियाएँ तब MQ के संदेशों का उपभोग करेंगी और उन्हें डिस्क पर लिखेंगी।

सभी MQ संदेशों का उपभोग करने वाली एक एकल प्रक्रिया के साथ फाइलसिस्टम में समवर्ती लेखन नहीं होगा

क्लस्टर में ActiveMQ चलाने के लिए एक अधिक मजबूत समाधान (संभवतः आपके प्रत्येक एप्लिकेशन इंस्टेंस में नोड के साथ) होगा। संदेशों के समवर्ती उपभोग को रोकने के लिए "JMSXGroupID" को देखें।