2010-02-26 9 views
34

मैं समझता हूँ कि 2 विकल्प उपलब्ध हैं:AMQP में "डिलीवरी मोड" क्या है?

  • "गैर लगातार"
  • "लगातार"

लेकिन क्या यह वास्तव में क्या मतलब है?

"गैर-निरंतर" के रूप में: यदि कोई उपभोक्ता नहीं है तो एएमक्यूपी कपड़े संदेश वितरित करने का प्रयास करेगा, संदेश गिरा दिया जाएगा?

"निरंतर" जैसा कि: एएमक्यूपी तब तक संदेश पुनः प्रयास करेगा जब तक उपभोक्ता इसे स्वीकार नहीं करता ??

उत्तर

26

@jldupont - क्या @nos ने कहा। 'टिकाऊ' कतार में वितरित 'निरंतर' के रूप में चिह्नित संदेशों को डिस्क पर लॉग किया जाएगा। दुर्घटनाग्रस्त होने से पहले संग्रहीत किसी भी लगातार संदेश के साथ, एक दुर्घटना की स्थिति में टिकाऊ कतारों को पुनर्प्राप्त किया जाता है। इसके बारे में अधिक जानकारी के लिए, मैं मेलिंग सूची पर पूछने का सुझाव देता हूं, या rabbitmq वेबसाइट पर पृष्ठभूमि जानकारी के विभिन्न टुकड़ों को देखता हूं। यदि आपके कोई प्रश्न हैं तो संपर्क में रहें।

चीयर्स

एलेक्सिस

+0

धन्यवाद Alexis !! – jldupont

+0

मुझे समझ में नहीं आता कि आप एक्सचेंज टिकाऊ क्यों घोषित कर सकते हैं। और दूसरी तरफ आप "कर सकते हैं" !? एक कतार घोषित करें कि उस एक्सचेंज को "अनुरूप" है? या उदाहरण के लिए यदि आप एक एक्सचेंज नंद्य घोषित करेंगे लेकिन एक कतार टिकाऊ है, और एक दुर्घटना होगी। क्या मैं उस टिकाऊ कतार को नंद्य विनिमय में पुनर्प्राप्त कर सकता हूं? @alexis – Detached

+2

"स्थायित्व" का मतलब केवल एक्सचेंज या क्यूई सर्वर को पुनरारंभ करेगा। इसका मतलब यह नहीं है कि एक टिकाऊ कतार में संग्रहीत संदेशों को जीवित रहेगा ... यह _also_ को संदेश स्तर की संपत्ति की आवश्यकता होगी '.deliveryMode = 2' । (मैंने अभी इन मामलों का परीक्षण किया है) – Myobis

12

delivery_mode AMQP में निर्धारित करता है कि संदेश दलाल पुनरारंभ के बाद डिस्क पर संग्रहीत किया जाएगा। आप लगातार के रूप में गए संदेशों चिह्नित कर सकते हैं - delivery_mode property = 2 seting द्वारा जब आप PHP (PECL AMQP विस्तार) में उदाहरण के लिए संदेश प्रकाशित:

$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2)); 

तुम भी कतार के रूप में टिकाऊ घोषित करने के लिए (या दलाल बंद हो जाता है के बाद हटा दिया जाएगा की आवश्यकता होगी)

$queue->setFlags(AMQP_DURABLE); 
संबंधित मुद्दे