RabbitMQ संदेश का आकार और प्रकार


97
  1. RabbitMQ कतारों में कौन से संदेश संग्रहीत किए जा सकते हैं? केवल तार? या क्या मैं यह चुन सकता हूं कि मैं किस प्रकार को स्टोर करना चाहता हूं: इंट, बाइनरी, स्ट्रिंग आदि?
  2. एक संदेश का अधिकतम आकार क्या है?
  3. कितनी कतारें या एक्सचेंज बनाए जा सकते थे? या यह सर्वर की शक्ति पर निर्भर करता है?

जवाबों:


117
  1. सैद्धांतिक रूप से कुछ भी संग्रहीत / संदेश के रूप में भेजा जा सकता है। आप वास्तव में कतारों में कुछ भी संग्रहीत नहीं करना चाहते हैं। यदि कतार अधिकांश समय खाली रहती है तो सिस्टम सबसे कुशलता से काम करता है। आप दो पूर्व शर्त के साथ कतार में अपनी इच्छानुसार कुछ भी भेज सकते हैं:

    • आपके द्वारा भेजी जाने वाली चीज़ को एक बाइटस्ट्रिंग से परिवर्तित किया जा सकता है
    • उपभोक्ता वास्तव में जानता है कि उसे क्या मिल रहा है और इसे मूल वस्तु में कैसे बदलना है

    स्ट्रिंग्स बहुत आसान हैं, उनके पास बाइट्स से और परिवर्तित करने के लिए एक अंतर्निहित विधि है। यदि आप जानते हैं कि यह एक स्ट्रिंग है तो आप जानते हैं कि इसे वापस कैसे बदलना है। सबसे अच्छा विकल्प XML, JSON, या YML जैसे मार्कअप स्ट्रिंग का उपयोग करना है। इस तरह आप वस्तुओं को स्ट्रिंग्स में बदल सकते हैं और मूल वस्तुओं पर फिर से वापस आ सकते हैं; वे प्रोग्रामिंग भाषाओं में काम करते हैं ताकि आपके उपभोक्ता को आपके निर्माता को एक अलग भाषा में लिखा जा सके जब तक कि वह जानता है कि ऑब्जेक्ट को कैसे समझा जाए। मैं जावा में काम करता हूँ। मैं खेतों में उप वस्तुओं के साथ जटिल संदेश भेजना चाहता हूं। मैं अपनी खुद की संदेश वस्तु का उपयोग करता हूं। संदेश ऑब्जेक्ट में दो अतिरिक्त विधियाँ हैं toBytesऔरfromBytesकि बाइटस्ट्रीम से और में परिवर्तित। मैं रूटिंग कुंजियों का उपयोग करता हूं जो उपभोक्ता को किस प्रकार के संदेश प्राप्त कर रहे हैं, इसमें कोई संदेह नहीं है। संदेश सीरियल योग्य है। यह ठीक काम करता है, लेकिन सीमित है क्योंकि मैं केवल अन्य जावा कार्यक्रमों के साथ इसका उपयोग कर सकता हूं।

  2. संदेश का आकार सर्वर पर मेमोरी द्वारा सीमित है, और यदि यह लगातार है तो मुफ्त HDD स्थान भी। आप शायद ऐसे संदेश नहीं भेजना चाहते जो बहुत बड़े हैं; फ़ाइल या DB का संदर्भ भेजना बेहतर हो सकता है।

    आप उनके प्रदर्शन उपायों पर भी पढ़ना चाह सकते हैं: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ ब्लॉग / 2012/04/25 / RabbitMQ प्रदर्शन-माप-भाग -2 /

  3. कतारें बहुत हल्के वजन की होती हैं, आप सबसे अधिक संभवत: आपके द्वारा लगाए गए कनेक्शनों की संख्या तक सीमित होंगे। यह सबसे अधिक संभावना सर्वर पर निर्भर करेगा। यहाँ एक अज्ञात प्रश्न पर कुछ जानकारी दी गई है: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-Febdays/003042.html


9

संदेश के अधिकतम आकार RabbitMQ में था 2 GiB संस्करण 3.8.0 से पहले:

%% Trying to send a term across a cluster larger than 2^31 bytes will
%% cause the VM to exit with "Absurdly large distribution output data
%% buffer". So we limit the max message size to 2^31 - 10^6 bytes (1MB
%% to allow plenty of leeway for the #basic_message{} and #content{}
%% wrapping the message body).
-define(MAX_MSG_SIZE, 2147383648).

संदर्भ: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/include/rabbit.hrl#L279

संस्करण 3.8.0 के बाद से यह 512 MiB हो गया है :

%% Max message size is hard limited to 512 MiB.
%% If user configures a greater rabbit.max_message_size,
%% this value is used instead.
-define(MAX_MSG_SIZE, 536870912).

संदर्भ: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/include/rabbit.hrl#L238


4
  1. देखें robthewolf का जवाब

  2. अधिकतम संदेश का आकार 2GB है, हालांकि, इस आकार के संदेशों के लिए प्रदर्शन ट्यूनिंग प्रभावी नहीं है। अधिकतम संदेश का आकार

  3. RabbitMQ Server Software द्वारा कतारों की संख्या पर कोई कठिन सीमा नहीं लगाई गई है, हालाँकि, सर्वर जिस हार्डवेयर पर चल रहा है वह इस सीमा को बहुत अच्छी तरह से प्रभावित कर सकता है।

3 ए। डिफ़ॉल्ट रूप से सर्वर द्वारा लगाई गई कोई कतार लंबाई सीमा नहीं है। हालाँकि, आप इसे सर्वर-साइड पॉलिसी (कॉन्फ़िगरेशन) या क्लाइंट साइड पॉलिसी के माध्यम से सीमित कर सकते हैं। अधिकतम कतार लंबाई

संबंधित पोस्ट पर अधिक जानकारी और लिंक हैं ।

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