2012-11-29 13 views
7

मैं RabbitMQ में एक डीएलएक्स कतार लागू करने की कोशिश कर रहा हूं। 1) जिंदा 2) मृत (एक्स मृत अक्षर मुद्रा:: "तत्काल", एक्स-संदेश-टीटीएल: परिदृश्य काफी आसान मैं 2 कतारों है 5000)मृत पत्र विनिमय RabbitMQ संदेश छोड़ना

और एक मुद्रा "तत्काल "है कि 1 के लिए बाध्य है) जिंदा

मैं इस उदाहरण भागने की कोशिश की: http://blog.james-carr.org/2012/03/30/rabbitmq-sending-a-message-to-be-consumed-later/ लेकिन ऐसा लगता है कि संदेशों के बाद टीटीएल समाप्त हो रहा है और वे एक्सचेंज में प्रकाशित हो न गिरा दिया जाता है, ताकि मेरी जिंदा कतार हमेशा खाली है ।

मैंने प्रबंधन कंसोल में हाथों से कतार बनाने की भी कोशिश की और मुझे वही व्यवहार मिलता है।

मैं Ubuntu/RabbitMQ 3.0.0 के साथ और मैक ओएस एक्स और RabbitMQ 2.8.7

साथ मैं कुछ याद आ रही हूँ यह परीक्षण किया?

+0

क्या आप 'मृत' कतार में जाने के लिए 'जीवित' कतार से समाप्त होने वाले संदेश चाहते हैं? – kzhen

+0

वास्तव में इसके विपरीत नहीं, मैं चाहता हूं कि मृत कतार से जीवित कतार में समाप्त होने वाले संदेश। –

+0

वे मृत कतार में कैसे पहुंचते हैं? – kzhen

उत्तर

8

जब खरगोश एमक्यू में संदेश गायब हो जाते हैं तो समस्या आमतौर पर बाइंडिंग के नीचे होती है। तो, काम कर मैं निम्नलिखित किया था अपने उदाहरण पाने के लिए:

  1. निर्मित 2 कतार, जिंदा, मृत (टीटीएल के साथ और DLX)

  2. एक मुद्रा प्रकार प्रत्यक्ष के तत्काल बुलाया बनाया

  3. एक रूटिंग कुंजी "मृत" के साथ "तत्काल" और कतार "जीवित" एक्सचेंज के बीच बाध्यकारी बनाया गया - इसका कारण यह है कि, मृत कतार में संदेशों के लिए रूटिंग कुंजी (यदि डिफ़ॉल्ट विनिमय का उपयोग करना 'मृत' है इसे मृत पत्र विनिमय पर बाध्यकारी में मिलान करने की जरूरत है)।

महत्वपूर्ण यहाँ हिस्सा तत्काल मुद्रा और जिंदा कतार के बीच बंधन में है।

परीक्षण करने के लिए मैंने मृत कतार में एक संदेश प्रकाशित किया, मैं इसे मृत कतार में संक्षेप में दिखाई दे सकता हूं, फिर जीवित कतार में दिखाई देता हूं।

+0

अब काम करता है! बहुत बहुत धन्यवाद! –

+0

मैंने एक स्पाइक किया और कुछ शोस्टॉपर्स मारा: 1. संदेश केवल डीएलक्यू हैं: जब क्यू के शीर्ष पर (http://www.rabbitmq.com/ttl.html - चेतावनी अनुभाग) इसका मतलब है कि अगर मैंने पहली बार 4 घंटे में समाप्त होने के लिए msgstr 1 को सेट किया है और msgstr 1 घंटे में समाप्त होने के लिए msgstr msgstr msgstr "msgstr" msgstr "1 की अवधि समाप्त होने के बाद ही समाप्त हो जाएगी। 2. संदेश के लिए टीटीएल खरगोश द्वारा रखा जाता है तो मान लें कि आप 10 एस के कम समय का उपयोग करते हैं। यदि उपभोक्ता समाप्त होने के 10 सेकंड बाद (संदेश बैकलॉग के कारण) के साथ संदेश का उपभोग करने में सक्षम नहीं है, तो इसे हटा दिया जाएगा और खो दिया जाएगा ऊपर दिया गया है खरगोश 3.0.1 के साथ सत्यापित किया गया है। क्या आप लोग कोई कामकाज देखते हैं? –

+2

@ AndreasÖhlund, "प्रति कतार टीटीएल" का उपयोग करके डिजाइन करने का प्रयास करें, यदि संभव हो तो "प्रति संदेश टीटीएल" नहीं। –

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