2015-03-17 7 views
6

से प्राप्त XML संदेश के xsd की पहचान करने के लिए आईबीएम एमक्यू में, मुझे एक आवश्यकता है जहां मुझे कतार से कई प्रकार के एक्सएमएल मिल सकते हैं। एक्सएमएल संदेशों को पहले से निर्दिष्ट xsd के अनुरूप माना जाएगा (कह रहे हैं, 5 xsd - जिसका अर्थ है कि मैं 5 अलग-अलग एक्सएमएल प्राप्त कर सकता हूं)। जब मुझे कतार से संदेश मिलता है, तो मैं xml के प्रकार (यदि इसका xsd1 या xsd2 या इससे भी अधिक)एमक्यू

कारण मैं जानना चाहता हूं कि मैं एसएक्स कार्यान्वयन के साथ एक जैक्सबी इंटरफ़ेस का उपयोग कर रहा हूं , जिसके लिए मुझे पैरामीटर के रूप में xml से संबंधित जावा ऑब्जेक्ट देना होगा। इसलिए मुझे पता होना चाहिए कि इनपुट किस xsd है और पैरामीटर को संगत रूप से असाइन किया गया है।

मेरे पास विकल्प है कि संदेश में हेडर में एक संपत्ति सेट करना है, लेकिन एमक्यू में संदेश छोड़ने वाली पार्टी तैयार नहीं है।

मेरे पास अन्य विकल्प क्या हैं? क्या मुझे mq से फ़ाइल नाम (xml का) मिल सकता है और फ़ाइल के नाम के आधार पर xsd ढूंढ सकता है? या क्या मुझे sax पार्सिंग करना है और रूट टैग की पहचान करना है और xsd प्रकार प्राप्त करना है? किसी भी अन्य बेहतर विकल्प किसी के मन में है?

उत्तर

1

मुझे लगता है कि आप कर सकते हैं:

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

2

डाकघर की तरह एमक्यू के बारे में सोचें। जब आप एक पत्र प्राप्त करते हैं, तो डाकघर अंदर (पेलोड) पर कुछ भी गड़बड़ नहीं करता है और यदि यह बाहर बदलता है, तो यह केवल रूटिंग जानकारी बदलता है। यदि आप आने वाले मेल को विभिन्न प्राप्तकर्ताओं को सॉर्ट करना चाहते हैं, जो भी इसे भेज रहा है उसे डेटा रखना है जिसके खिलाफ लिफाफे के बाहर सॉर्ट मानदंड संचालित होते हैं। यदि यह काम नहीं करता है, तो आपको लिफाफा खोलना होगा और प्राप्तकर्ता का नाम, विभाग, या जो भी कागजात के अंदर देखना होगा।

आपका एमक्यू संदेश है जो लिफाफा है। प्रकार मानदंड अलग-अलग कतार नाम, संदेश की एक संपत्ति, संदेश शीर्षलेख की संपत्ति, या पेलोड में कुछ हो सकता है। लेकिन जब तक प्रेषक चयन मानदंडों के आधार पर गंतव्य कतार नाम को स्पष्ट रूप से सेट नहीं करता है, या संदेश या हेडर प्रॉपर्टी सेट करता है, तो आपका एकमात्र विकल्प पेलोड का निरीक्षण करना और इसे समझना है।

यदि आपको पेलोड का निरीक्षण करना है, तो यह आईबीएम एकीकरण ब्रोकर के लिए एक आदर्श परिदृश्य है। लेकिन आप इस फ़ंक्शन को करने के लिए एक एप्लिकेशन भी लिख सकते हैं। अक्सर यह एक डिस्पैच ऐप द्वारा किया जाता है जो संदेश प्राप्त करता है, यह कहां जाता है, उसके बाद यह एक और कतार और COMMIT एस GET और PUT संचालन पर रखता है। लेकिन यदि प्रेषण ऐप को सही कतार निर्धारित करने के लिए एक्सएमएल को पार्स करना होगा, तो संदेश को दो बार पार्स किया जाना चाहिए - प्रेषक द्वारा एक बार, प्राप्तकर्ता ऐप द्वारा।

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