node.js - RabbitMQ बनाम सॉकेट.io?



websocket amqp (2)

अद्यतन करें

क्या ऐसे परिदृश्य हैं जिनकी मुझे वेब ऐप्स के लिए RabbitMQ की आवश्यकता है जहां Socket.io पर्याप्त नहीं है? ब्राउज़र उपयोगकर्ताओं को नोड.जेएस सर्वर के माध्यम से प्रत्येक अभिभावक के साथ संवाद करने में सक्षम होना चाहिए। एक उपयोगकर्ता एक संदेश लिखता है और अन्य सभी उपयोगकर्ता इसे प्राप्त करेंगे।

जब आपके पास केवल सॉकेट की तुलना में ये सरल आवश्यकताएं हैं। अकेले ही पर्याप्त होगा। । जब आप अपनी नौकरी (भारी) को ऑफ़लाइन और नियंत्रित तरीके से संसाधित करना चाहते हैं, तो आपको केवल एक संदेश queue की आवश्यकता होती है।

http://en.wikipedia.org/wiki/Message_queue :

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

इस वाक्य में डूबने की जरूरत है। निर्माता (एक प्रक्रिया) कतार में नौकरी करता है और उपभोक्ता कतार से नौकरी लेकर उपभोग करता है। उपभोक्ता, ज्यादातर बार, कई प्रक्रियाएं होती हैं जो कई नौकरियों को समवर्ती रूप से उपभोग करती हैं। उपभोक्ता एक-दूसरे से यह बताने में असमर्थ हैं कि वे कौन से काम कर रहे हैं।

यह कतार को प्रथम-प्रथम-प्रथम-आउट (FIFO) डेटा संरचना बनाता है।

मुझे लगता है कि कतार की एक महत्वपूर्ण संपत्ति है। फर्स्ट-इन-फर्स्ट-आउट संपत्ति हालांकि सेमस्टॉकड जैसे उन्नत संदेश कतार के साथ आप नौकरी प्राथमिकता दे सकते हैं।

मुझे उम्मीद है कि यह सब समझ में आता है;)

मैं रियल टाइम लाइव वेब ऐप डेवलपमेंट कर रहा हूं।

क्या आप थोड़ा बेहतर समझा सकते हैं ताकि हम आपको बेहतर उत्तर दे सकें?

मैं काफी नहीं मिलता कि कैसे RabbitMQ काम करता है। लेकिन त्वरित पढ़ने से ऐसा लगता है कि यह संदेशों के प्रकाशन / सदस्यता को संभालता है।

नीचे संदेश कतार के बारे में उद्धरण देखें। इसे थोड़ी देर के लिए डूबने दें। आप http://en.wikipedia.org/wiki/Message_queue बारे में WIKI भी पढ़ सकते हैं।

एक उपयोगकर्ता (एक ब्राउज़र में) कुछ प्रकाशित करता है और ग्राहकों (अन्य ब्राउज़रों में) को वह संदेश मिलता है। नहीं है कि Socket.io websockets के साथ क्या कर रहा है?

सॉकेट.इओ बहुत सारे विभिन्न ट्रांसपोर्ट (भी वेबसोकेट) का समर्थन करता है और ऐसा इसलिए होना चाहिए क्योंकि वेबसोकेट अधिकांश ब्राउज़रों द्वारा समर्थित नहीं हैं। लेकिन उदाहरण के लिए Google Chrome पहले से ही वेबस्कैट का समर्थन करता है। मेरा मानना ​​है कि वेबसोकेट भविष्य का परिवहन है (लेकिन अभी तक नहीं!)। जब आप Socket.io के ब्राउज़र सपोर्ट पेज को देखेंगे तो आप देखेंगे कि Socket.io सभी प्रमुख ब्राउज़रों (कुछ और भी प्राचीन) का समर्थन करता है। अच्छी बात यह है कि यह एक अच्छा एपीआई के चारों ओर लपेटता है।

उनमें से प्रत्येक के लिए क्या फायदे / नुकसान हैं?

आप सेब की तुलना संतरे से कर रहे हैं इसलिए तुलना करना अजीब है।

RabbitMQ

http://www.rabbitmq.com/tutorials/tutorial-one-python.html :

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

लाभ

नुकसान:

  • वास्तव में "ब्राउज़र" के लिए नहीं है।

Socket.io

http://socket.io/ :

सॉकेट.आईओ का लक्ष्य हर ब्राउज़र और मोबाइल डिवाइस में रियलटाइम ऐप्स को संभव बनाना है, विभिन्न परिवहन तंत्रों के बीच अंतर को धुंधला करना।

लाभ

  • यह ब्राउज़र के लिए है

नुकसान

  • यह एक संदेश कतार नहीं है।

क्या Socket.io RabbitMQ की जगह ले सकता है?

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

https://src-bin.com

मैं रियल टाइम लाइव वेब ऐप डेवलपमेंट कर रहा हूं।

ब्राउज़र उपयोगकर्ताओं को नोड.जेएस सर्वर के माध्यम से प्रत्येक अभिभावक के साथ संवाद करने में सक्षम होना चाहिए। एक उपयोगकर्ता एक संदेश लिखता है और अन्य सभी उपयोगकर्ता इसे प्राप्त करेंगे।

मैं काफी नहीं मिलता कि कैसे RabbitMQ काम करता है। लेकिन त्वरित पढ़ने से ऐसा लगता है कि यह संदेशों के प्रकाशन / सदस्यता को संभालता है।

एक उपयोगकर्ता (एक ब्राउज़र में) कुछ प्रकाशित करता है और ग्राहकों (अन्य ब्राउज़रों में) को वह संदेश मिलता है। नहीं है कि Socket.io websockets के साथ क्या कर रहा है?

यहाँ मेरे सवाल हैं:

  1. उनमें से प्रत्येक के लिए क्या फायदे / नुकसान हैं?
  2. क्या Socket.io RabbitMQ की जगह ले सकता है?
  3. क्या ऐसे परिदृश्य हैं जिनकी मुझे वेब ऐप्स के लिए RabbitMQ की आवश्यकता है जहां Socket.io पर्याप्त नहीं है?

Answer #1

RabbitMQ का उपयोग अनुप्रयोगों में संदेशों को पारित करने के लिए किया जाता है, जरूरी नहीं कि एक ब्राउज़र में उपयोगकर्ता। फिर आप एक RabbitMQ क्लाइंट को नोड में लागू कर सकते हैं। उदाहरण के लिए, जो प्राप्त संदेशों को ब्राउज़र में धकेलता है।

एक उदाहरण के लिए http://www.rabbitmq.com/blog/2010/11/12/rabbitmq-nodejs-rabbitjs/ देखें।





socket.io