2009-06-24 12 views
145

मैं बस जेएमएस और अपाचे एक्टिवएमक्यू के बारे में पढ़ रहा था। और यह सोच रहा था कि असली दुनिया के उपयोग में लोगों ने जेएमएस या इसी तरह के संदेश कतार प्रौद्योगिकियों का उपयोग किया है?जेएमएस/संदेश कतारों का असली दुनिया उपयोग?

उत्तर

152

जेएमएस (एक्टिवएमक्यू एक जेएमएस ब्रोकर कार्यान्वयन है) को एसिंक्रोनस अनुरोध प्रसंस्करण की अनुमति देने के लिए एक तंत्र के रूप में उपयोग किया जा सकता है। आप ऐसा करना चाहते हैं क्योंकि अनुरोध को पूरा करने में लंबा समय लगता है या क्योंकि कई पक्षों को वास्तविक अनुरोध में रुचि हो सकती है। इसका उपयोग करने का एक और कारण यह है कि जेएमएस के माध्यम से जानकारी तक पहुंचने के लिए कई क्लाइंट (संभावित रूप से अलग-अलग भाषाओं में लिखे गए) को अनुमति दें। ActiveMQ यहां एक अच्छा उदाहरण है क्योंकि आप सी #/जावा/रूबी क्लाइंट से एक्सेस की अनुमति देने के लिए STOMP प्रोटोकॉल का उपयोग कर सकते हैं।

वास्तविक दुनिया का उदाहरण एक वेब एप्लिकेशन का है जो किसी विशेष ग्राहक के लिए ऑर्डर देने के लिए उपयोग किया जाता है।

  • स्टोर (एसएपी) के रूप में तीसरे पक्ष के बैक-एंड प्रणाली के कुछ प्रकार में आदेश
  • : कि ऑर्डर देने (और एक डेटाबेस में भंडारण) आप अतिरिक्त कार्यों के एक नंबर ले जाने के लिए चाहते हो सकता है के भाग के रूप
  • ग्राहक को एक ईमेल भेजें उन्हें सूचित करना उनके आदेश

रखा गया है यह आपके आवेदन कोड एक JMS कतार जो एक आदेश id है पर संदेश प्रकाशित करेंगे ऐसा करने के लिए। कतार को सुनकर आपके आवेदन का एक हिस्सा ऑर्डर आईडी ले कर घटना का जवाब दे सकता है, डेटाबेस में ऑर्डर देख रहा है और फिर उस ऑर्डर को किसी अन्य थर्ड पार्टी सिस्टम के साथ रख सकता है। ऑर्डर आईडी लेने और ग्राहक को एक पुष्टिकरण ईमेल भेजने के लिए आपके आवेदन का एक और हिस्सा जिम्मेदार हो सकता है।

+0

हाय @ जेन क्या आपने यह प्रलेखन टैग देखा है? https://stackoverflow.com/documentation/jms/commit उन्हें विषय को सक्षम करने के लिए केवल एक कम्यूटर समर्थन की आवश्यकता है, मुझे लगता है कि आप एक हो सकते हैं :) जो उन्हें हमें JMS – juanmf

+0

@Jon पर अद्भुत दस्तावेज़ देने में सक्षम बनाता है जैसा कि मैं समझता हूं जेएमएस खुद ही उद्यम एकीकरण पैटर्न का कार्यान्वयन है? – valik

+0

नहीं, मुले या ऊंट होगा ... – Jon

80

दीर्घकालिक संचालन को असंकालिक रूप से संसाधित करने के लिए हर समय उनका उपयोग करें। एक वेब उपयोगकर्ता प्रक्रिया के अनुरोध के लिए 5 सेकंड से अधिक समय तक इंतजार नहीं करना चाहता। यदि आपके पास ऐसा कोई है जो उससे अधिक समय तक चलता है, तो एक डिज़ाइन एक कतार में अनुरोध जमा करना है और तुरंत एक यूआरएल वापस भेजना है जिसे उपयोगकर्ता यह देखने के लिए जांच सकता है कि नौकरी खत्म होने पर।

प्रकाशन/सब्सक्राइब कई रिसीवरों से प्रेषकों को डीकॉप्लिंग करने के लिए एक और अच्छी तकनीक है। यह एक लचीला वास्तुकला है, क्योंकि ग्राहक आ सकते हैं और आवश्यकतानुसार जा सकते हैं।

+34

अपना उत्तर पढ़ने के बाद मैं अपनी कतार में जेएमएस जोड़ने जा रहा हूं 'मैं इस वर्ष सीखने जा रहा हूं' :) – Roman

14

वितरित (ए) तुल्यकालिक कंप्यूटिंग।
एक असली दुनिया का उदाहरण एक आवेदन-व्यापी अधिसूचना ढांचा हो सकता है, जो आवेदन के उपयोग के दौरान विभिन्न बिंदुओं पर हितधारकों को मेल भेजता है। तो यह एप्लिकेशन Producer के रूप में कार्य करेगा, Message ऑब्जेक्ट बनाकर, इसे किसी विशेष Queue पर डालें और आगे बढ़ें।
Consumer का एक सेट होगा जो प्रश्न में Queue की सदस्यता लेगा, और Message पर भेजे गए देखभाल को ध्यान में रखेगा। ध्यान दें कि इस लेनदेन के दौरान Producer एस को तर्क दिया गया है कि Message को कैसे प्रबंधित किया जाएगा।
मैसेजिंग फ्रेमवर्क (एक्टिवएमक्यू और पसंद) MessageBroker एस प्रदान करके ऐसे Message लेनदेन की सुविधा के लिए रीढ़ की हड्डी के रूप में कार्य करते हैं।

+0

मुझे एसिंक्रोनस प्रोसेसिंग चाहिए क्योंकि RestService Api तुल्यकालिक है। ActiveMq और Jms के साथ इसे कैसे करें। कृपया इस पर सहायता करें। http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq- मिडलवेयर- एकीकरण। आपकी मदद और समय के लिए धन्यवाद – Kumar

3

हम मैसेजिंग का इस्तेमाल किया है ऑनलाइन उद्धरण

63

मैं JMS के लिए इतने सारे आश्चर्यजनक उपयोग किया है उत्पन्न करने के लिए: ग्राहक सेवा के लिए

  • वेब चैट संचार।

  • बैकएंड पर डीबग लॉगिंग। सभी ऐप सर्वरों ने विभिन्न स्तरों पर डीबग संदेशों को प्रसारित किया। डीएसएस संदेश देखने के लिए एक जेएमएस क्लाइंट लॉन्च किया जा सकता है। निश्चित रूप से मैं syslog की तरह कुछ इस्तेमाल कर सकता था, लेकिन इसने मुझे प्रासंगिक जानकारी (e.q. द्वारा ऐप सर्वर नाम, एपीआई कॉल, लॉग स्तर, उपयोगकर्ता आईडी, संदेश प्रकार, आदि ...) के आधार पर आउटपुट फ़िल्टर करने के सभी तरीकों को दिया। मैंने आउटपुट को रंगीन भी किया।

  • फ़ाइल पर लॉगिंग डीबग करें। उपर्युक्त के समान, फ़िल्टर का उपयोग करके केवल विशिष्ट टुकड़े खींचे गए थे, और सामान्य लॉगिंग के लिए फ़ाइल में लॉग इन किया गया था।

  • चेतावनी। फिर, ऊपर प्रवेश करने के लिए एक समान सेटअप, विशिष्ट त्रुटियों के लिए देख रहा है, और विभिन्न साधनों (ईमेल, पाठ संदेश, आईएम, गुर्राना पॉप-अप ...)

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

  • और हमेशा की तरह - तरह के बिलिंग, आदेश प्रसंस्करण, प्रावधानीकरण, ईमेल पीढ़ी के रूप में देरी गतिविधि के लिए लेन-देन कतार में है ...

यह बहुत अच्छा है कहीं भी आप एसिंक्रोनस रूप संदेशों के वितरण की गारंटी चाहते हैं।

8

हम इसे एसिंक्रोनस प्रोसेसिंग शुरू करने के लिए उपयोग करते हैं जिसे हम किसी मौजूदा लेनदेन के साथ बाधित या संघर्ष नहीं करना चाहते हैं।

उदाहरण के लिए, कहें कि आपको "सामान खरीदने" जैसे तर्क का एक महंगा और बहुत महत्वपूर्ण टुकड़ा मिला है, खरीद सामग्री का एक महत्वपूर्ण हिस्सा 'सामान स्टोर को सूचित करना' होगा। हम अधिसूचना कॉल को अतुल्यकालिक बनाते हैं ताकि अधिसूचना कॉल में जो भी तर्क/प्रसंस्करण शामिल हो, वह खरीद व्यापार तर्क के साथ संसाधनों को अवरुद्ध या विरोध नहीं करता है। अंत परिणाम, पूर्ण खरीद लें, उपयोगकर्ता खुश है, हमें अपना पैसा मिल जाता है और क्योंकि कतार की गारंटी दी जाती है, जैसे ही यह खुलता है या जैसे ही कतार में एक नई वस्तु होती है, स्टोर को अधिसूचित किया जाता है।

+1

कृपया इस पर सहायता करें। http://stackoverflow.com/questions/19706788/jersey-rest-web-service-with-activemq- मिडलवेयर- एकीकरण। आपकी मदद और समय के लिए धन्यवाद। – Kumar

+1

लेकिन अनुरोध की वजह से नेटवर्क समस्या की वजह से असीमित है, आपका संदेश भेजा नहीं जा सकता है। इस बारे में क्या? जब आप सामान खरीदना चाहते हैं, तो आपका नाइटिफिकेशन भेजा जाना चाहिए। क्या वह ऐसा नहीं? – grep

6

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

मेरे मामले में, मैंने अपने थीसिस में एक संदेश उन्मुख मिडलवेयर (एमओएम) विकसित करने में जेएमएस का उपयोग किया है, जहां आपके अनुरोध के रूप में एक तरफ ऑब्जेक्ट-ओरिएंटेड ऑब्जेक्ट्स के विशिष्ट प्रकार उत्पन्न होते हैं, और दूसरे पर संकलित और निष्पादित होते हैं आपकी प्रतिक्रिया के रूप में पक्ष।

9

मैंने इसे विभिन्न फंड प्रबंधन प्रणालियों के बीच इंट्राडे ट्रेड भेजने के लिए उपयोग किया है। यदि आप एक महान प्रौद्योगिकी संदेश के बारे में और जानना चाहते हैं, तो मैं "Enterprise Integration Patterns" पुस्तक की पूरी तरह से अनुशंसा कर सकता हूं। अनुरोध/उत्तर और प्रकाशित/सदस्यता लेने जैसी चीजों के लिए कुछ जेएमएस उदाहरण हैं।

संदेश एकीकरण के लिए एक उत्कृष्ट उपकरण है।

3

Apache Camel ActiveMQ के साथ मिलाकर प्रयोग उद्यम एकीकरण पैटर्न

2

हम अविश्वसनीय नेटवर्क पर दूरस्थ साइटों की एक बड़ी संख्या में सिस्टम के साथ संचार के लिए JMS का उपयोग कर रहे करने के लिए शानदार तरीका है।विश्वसनीय संदेश के साथ संयोजन में ढीला युग्मन एक स्थिर प्रणाली परिदृश्य पैदा करता है: प्रत्येक संदेश तकनीकी रूप से संभव होने पर भेजा जाएगा, नेटवर्क में बड़ी समस्याएं पूरे सिस्टम परिदृश्य पर प्रभाव नहीं पड़ेगी ...

6

मैंने इसका उपयोग किया है मेरे अकादमिक परियोजना के लिए जो अमेज़ॅन के समान ऑनलाइन खुदरा वेबसाइट थी। JMS निम्नलिखित विशेषताएं को संभालने के लिए इस्तेमाल किया गया था:

  1. अद्यतन ग्राहकों द्वारा दिए गए आदेशों की स्थिति, लदान दूसरे करने के लिए एक स्थान से यात्रा के रूप में। यह लगातार जेएमएस क्यूई को संदेश भेजकर किया गया था।
  2. किसी भी असामान्य घटनाओं जैसे शिपमेंट में देरी हो रही है और फिर ग्राहक को ईमेल भेजना है।
  3. यदि वितरण अपने गंतव्य तक पहुंच गया है, तो वितरण कार्यक्रम भेज रहा है।

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

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