ActiveMQ का उपयोग किसके लिए किया जाता है - क्या हम एक डेटाबेस का उपयोग करके मैसेजिंग अवधारणा को लागू कर सकते हैं?


116

मैंने इसे देखा और यह 2 प्रणालियों के बीच संदेश भेजता था।
पर क्यों? आप सिर्फ एक का उपयोग क्यों नहीं करेंगे Database?
कुछ सुविधा होनी चाहिए जो ActiveMQकि Databasesनहीं है?


इसी तरह के सवाल stackoverflow.com/q/2868800/460775
EMBarbosa

जवाबों:


178

इसका उपयोग दो वितरित प्रक्रियाओं के बीच मज़बूती से संवाद करने के लिए किया जाता है।

हां, आप दो प्रक्रियाओं के बीच संवाद करने के लिए एक डेटाबेस में संदेशों को संग्रहीत कर सकते हैं, लेकिन, जैसे ही संदेश प्राप्त होता है आपको संदेश को भेजना होगा DELETE, इसका मतलब है कि एक पंक्ति INSERTऔर DELETEप्रत्येक संदेश के लिए।
जब आप करने की कोशिश पैमाने पर है कि प्रति सेकंड संदेशों के हजारों संवाद स्थापित करने के लिए, डेटाबेस से अधिक आने की होती है

संदेश-उन्मुख मध्य-वेयर [एमओएम] जैसे ActiveMQदूसरी ओर उन उपयोग मामलों को संभालने के लिए बनाए गए हैं।
वे मानते हैं कि एक स्वस्थ प्रणाली में संदेश बहुत जल्दी नष्ट हो जाएंगे और ओवरहेड से बचने के लिए अनुकूलन कर सकते हैं

यह उपभोक्ता को SQL क्वेरी करके नए संदेश के लिए सर्वेक्षण करने के बजाय उपभोक्ताओं को संदेश भेज सकता है।
यह आगे सिस्टम में भेजे जा रहे नए संदेशों को संसाधित करने में शामिल विलंबता को कम करता है।


अच्छी व्याख्या! क्या दो वितरित प्रक्रियाओं को एक ही प्रक्रिया का होना चाहिए? मेरा मतलब है कि एक ही एप्लिकेशन के दो उदाहरण?
मैवरिक

नहीं, मनमानी एप्लिकेशन ActiveMQ पर एक दूसरे के साथ संवाद कर सकते हैं। उदाहरण के लिए, ए और बी एप्लिकेशन क्यू एबी और बीए बना सकते हैं (पढ़ें: ए से बी और दूसरे तरीके से संदेश) और एक दूसरे के लिए मेल भेजने वाली कतार के लिए संदेश भेजें।
एलेक्स

क्या आप कृपया एक नज़र stackoverflow.com/questions/48579060/… ले सकते हैं ?
gstackoverflow

67

ActiveMQ, या सामान्य रूप से सभी संदेश ओरिएंटेड मिडलवेयर (MOM) कार्यान्वयन दो अनुप्रयोगों, या एक अनुप्रयोग के अंदर दो घटकों के बीच संदेश भेजने के उद्देश्य से डिज़ाइन किए गए हैं

अनिवार्य रूप से, एमओएम और डेटाबेस एक सामान्य आधार साझा करते हैं जिसमें वे पढ़ने और लिखने के लिए ट्रांजेक्शनल और लगातार डेटा स्टोरेज प्रदान करते हैं।
बड़ा अंतर उपयोग पैटर्न है - जहां डेटाबेस बहुत सामान्य होते हैं और कई तालिकाओं पर जटिल खोज के लिए अनुकूलित होते हैं, एमओएम संदेशों को पढ़ने के लिए अनुकूलित होता है, एक समय में, फैशन की तरह एक एफआईएफओ [कतार] में।

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

बेशक, वहाँ अधिक विस्तृत सुविधाओं है कि केवल ActiveMQ में हैं, जैसे तार प्रोटोकॉल के एक बहुत हैं OpenWire, STOMPऔर MQTT, JMS, EIPएक साथ अपाचे ऊंट, "अनुरोध / उत्तर" और "प्रकाशित करें / सदस्यता लें", JMS ब्रिजिंग, समूहन की तरह संदेश पैटर्न (के साथ " दलालों का नेटवर्क "), जो स्केलिंग और वितरण आदि की अनुमति देता है,
आपको उन विषयों पर थोड़ा पढ़ना चाहिए यदि आप रुचि रखते हैं क्योंकि वे बड़े हैं।


25

ActiveMQमहान अनुसूचक का समर्थन है, जिसका अर्थ है कि आप किसी विशेष समय पर वितरित होने के लिए अपना संदेश भेज सकते हैं ।

हमने इस सुविधा का उपयोग स्वास्थ्य देखभाल परिदृश्य में अपने दवा विवरण अपलोड करने वाले रोगियों को दवा अनुस्मारक भेजने के लिए किया है।


3
यह बहुत मजेदार है। हमने इसी तरह के अनुस्मारक उद्देश्यों के लिए क्वार्ट्ज शेड्यूलिंग लाइब्रेरी का उपयोग किया है।
सिद्धार्थ

हमने Scheduled Jobsउन्हीं उद्देश्यों के लिए ओरेकल डेटाबेस का उपयोग किया है।
ahmednabil88

15

RDBMS के साथ, जब आप डेटा की एक पंक्ति को संसाधित करते हैं, तो आप आम तौर पर एक ध्वज को इंगित करते हुए अपडेट करते हैं कि पंक्ति को संसाधित किया गया है ताकि प्रसंस्करण दोहराया न जाए।

हालाँकि, संदेश कतार के साथ, आपको केवल एक संदेश को स्वीकार करना होगा और अगला उपभोक्ता अगले एक को संसाधित करेगा।

अंतर यह है कि एक्टीबीएम UPDATEकी तुलना acknowledgeमें आरडीबीएमएस में स्टैटिमेंट वास्तव में धीमा ऑपरेशन है ।


8

मैं निम्नलिखित पर जोर देना चाहूंगा:

अस्वीकृत : सिस्टम कनेक्ट किए बिना संचार करने में सक्षम हैं। क्यू सिस्टम के बीच स्थित है, एक सिस्टम विफलता कभी भी अन्य को प्रभावित नहीं करेगी क्योंकि क्यू के माध्यम से संचार किया जाता है। जब वे उठते हैं तो सिस्टम काम करना जारी रखता है।

पुनर्प्राप्ति समर्थन : कतार में संदेश स्वयं बने रहे। यदि कतार विफल होती है, तो संदेशों को बाद में पुनर्स्थापित किया जा सकता है।

विश्वसनीय संचार : ग्राहक अनुरोधों को संसाधित करने वाली प्रणाली पर विचार करें। सामान्य मामलों में सिस्टम को प्रति मिनट 100 अनुरोध प्राप्त होते हैं। यह प्रणाली अविश्वसनीय है जब अनुरोध की संख्या औसत से परे हो जाती है। ऐसे मामले में क्यू अनुरोधों का प्रबंधन कर सकता है और यह समय-समय पर सिस्टम थ्रूपुट पर आधारित संदेशों को बिना तोड़े इसे आगे बढ़ा सकता है।

एसिंक्रोनस : क्लाइंट सर्वर संचार गैर-अवरुद्ध है। एक बार क्लाइंट ने सर्वर को रिक्वेस्ट भेज दी तो वह बिना प्रतिक्रिया के इंतजार किए अन्य ऑपरेशन कर सकता है। प्रतिक्रिया मिलने पर इसे ग्राहक कभी भी संभाल सकता है।


7

से विकिपीडिया

Apache ActiveMQ एक खुला स्रोत संदेश दलाल है जो जावा में एक पूर्ण जावा संदेश सेवा (JMS) क्लाइंट के साथ मिलकर लिखा गया है। यह "एंटरप्राइज फीचर्स" प्रदान करता है जो इस मामले में एक से अधिक क्लाइंट या सर्वर से संचार को बढ़ावा देता है

आपके प्रश्नों के बारे में:

आप एक डेटाबेस का उपयोग क्यों नहीं करेंगे?

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

यदि आप मैसेजिंग सिस्टम के बजाय डेटाबेस का उपयोग करते हैं तो डेटाबेस में संदेश डालने और हटाने के संबंध में मैं @ हीराम चिरिनो उत्तर से पूरी तरह सहमत हूं ।

इस लेख और इस लेख से लाभ

  1. एंटरप्राइज़ एकीकरण : विभिन्न भाषाओं और विभिन्न ऑपरेटिंग सिस्टमों के साथ निर्मित एप्लिकेशन को एक दूसरे के साथ एकीकृत करने के लिए
  2. स्थान पारदर्शिता : क्लाइंट एप्लिकेशन को यह जानने की आवश्यकता नहीं है कि सेवा एप्लिकेशन कहां स्थित हैं
  3. विश्वसनीय संचार - संदेश के उत्पादकों / उपभोक्ताओं को उसी समय उपलब्ध नहीं होना चाहिए
  4. स्केलिंग - अधिक सेवाओं को जोड़कर क्षैतिज रूप से स्केल कर सकते हैं
  5. अतुल्यकालिक संचार - एक ग्राहक एक संदेश को आग लगा सकता है और तब तक अवरुद्ध करने के बजाय अन्य प्रसंस्करण जारी रख सकता है जब तक कि सेवा ने प्रतिक्रिया नहीं दी है;
  6. कम युग्मन - पिछले 5 लाभों के परिणामस्वरूप ग्राहकों और सेवाओं द्वारा बनाई गई धारणाएं बहुत कम हो गई हैं। एक सेवा ग्राहक को प्रभावित या बाधित किए बिना, उसके स्थान, प्रोटोकॉल और उपलब्धता सहित अपने बारे में विवरण बदल सकती है।

सक्रिय होना चाहिए ActiveMQ डेटाबेस है कि न?

वहां कई हैं। अधिक विवरण के लिए प्रलेखन पृष्ठ पर एक नज़र डालें । उपयोग-मामलों पर भी एक नज़र डालें ।

ActiveMQ के आंतरिक को समझने के लिए इस प्रस्तुति पर एक नज़र डालें ।


2

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.