java - Apache Camel - Empty body inside AggregationStrategy -
यह मेरा मार्ग है:
def.convertBodyTo (String.class) .split ( )। मैथि (विभाजन प्रोसेसर, "विभाजन") .ग्रेजेशन स्ट्रेटजी (मेरी एग्रीग्रेजेशन स्ट्रेटजी) .बीन (मेरा प्रोसेसर, "एक विधि") .end (); मैं दो अलग-अलग HTTP समापन बिंदुओं से अधिक एक एक्सचेंज भेजने की कोशिश कर रहा हूं।
यह मेरी एकत्रीकरण रणनीति है:
@ ओवरराइड पब्लिक एक्सचेंज एकजेट (एक्सचेंज पुरानी एक्सचेंज, एक्सचेंज न्यूएक्सchange) {संदेश में संदेश = नया एक्सचेंज.जेट इन (); स्ट्रिंग बॉडी = inMsg.getBody (String.class); स्ट्रिंग पुराना बॉडी = ""; अगर (पुरानाई एक्सचेंज == रिक्त) {नया एक्सचेंज लौटें; } Else {oldBody = oldExchange.getIn ()। GetBody (String.class); OldExchange.getIn ()। SetBody (पुराने बॉडी + "+"); पुराना एक्सचेंज लौटें; }} लेकिन
शरीर हमेशा "" के बराबर होता है और इनमेस्स है "[बॉडी का उदाहरण है java.io.InputStream]"
कन्वर्टबॉडीओ (स्ट्रिंग। क्लास) या तो (कम से कम जिस तरह से मैं इसे प्रयोग कर रहा हूं) काम नहीं करता।
मैं क्या कर रहा हूं?
प्रसंग पर रूट या सेटस्ट्रीम कैचे (सच) पर स्ट्रीम कैशिंग () भी काम नहीं करते।
1 संपादन करें:
ऊंट संस्करण: 2.12.13 < / P>
एक पद्धति में मैं एक HTTP समापन बिंदु पर एक्सचेंज भेजने के लिए एक निर्माता टेम्पलेट का उपयोग कर रहा हूं:
विनिमय = निर्माता टाइम्प्लेट.send (uri, विनिमय); और इसके बाद मैं एक्सचेंज बॉडी में कुछ प्रसंस्करण करता हूं।
मैंने देखा है कि अगर मैं सीधा घटक का उपयोग करता हूं तो यही काम करता है।
मुझे लगता है कि इस कैमल टिकट में समस्या की रिपोर्ट है:
एक वैकल्पिक हल के रूप में इस बग के लिए, आप एक कस्टम प्रोसेसर का उपयोग करते हैं, तब आप केवल संदेश निकाय को स्ट्रिंग में कनवर्ट कर सकते हैं, इसलिए स्ट्रीम मेमोरी में पढ़ी जाती है और एकत्रीकरण रणनीति में इसका उपयोग सुरक्षित रूप से किया जा सकता है।
Comments
Post a Comment