2013-05-31 5 views
9

मुझे पता है कि आप एक एज़ूर सेवा बस कतार के साथ एक समय अवधि में काम करने के लिए डुप्लिकेट पहचान सेट कर सकते हैं। हालांकि, क्या किसी को पता है कि यह कतार में वस्तुओं के आधार पर काम करता है?विंडोज़ एज़ूर सर्विस बस क्यूज़ डुप्लिकेट डिटेक्शन काम कैसे करता है?

तो अगर मेरे पास "SO_1" की एक आईडी वाला कोई ऑब्जेक्ट है जो कतार में डाल दिया जाता है और बाद में इसका उपभोग किया जाता है, तो क्या डुप्लिकेट डिटेक्शन अभी भी वैध है?

मुझे लगता है कि मैं क्या पूछ रहा हूं - क्या यह समय सीमा और वस्तु है, या सिर्फ समय सीमा है जो कतार को एक डुप्लिकेट तय करती है?

उत्तर

15

http://blog.iquestgroup.com/en/windows-azure-service-bus-duplicate-detection/#.UaiXrd7frIU

हम दोहराव को सक्रिय करते हैं, तो Windows Azure सेवा बस हमारे संदेशों के इतिहास को संग्रहीत करने शुरू कर देंगे। समय की इस अवधि को केवल कुछ मिनटों से लेकर दिनों तक सीमित करने के लिए कॉन्फ़िगर किया जा सकता है। यदि सेवा बस पर एक डुप्लिकेट संदेश भेजा जाता है, तो सेवा स्वचालित रूप से संदेश को अनदेखा कर देगी।

+1

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

+0

यह विंडोज़ एज़ूर सर्विस बस से काफी स्पष्ट है, जो हमारे संदेशों का इतिहास संग्रहीत करना शुरू कर देगा। समय की इस अवधि को केवल कुछ मिनटों से लेकर दिनों तक सीमित करने के लिए कॉन्फ़िगर किया जा सकता है। – astaykov

2

यह वास्तव में बस मुझे थोड़ा सा डिफ़ॉल्ट लगता है और डिफ़ॉल्ट समय 10 मिनट है। "कुंजी" MessageId है। हमारे मामले में, अधिकांश परिदृश्यों में डुप्लिकेट पहचान ठीक है, लेकिन कुछ में यह बुरी खबर थी (विशेष रूप से 10 मिनट की सीमा के साथ)।

// For this message, we need to prevent dups from being detected 
msg.MessageId = messageId + "_" + DateTime.Now.ToString("u"); 

तुम सिर्फ रोकने "स्पैमिंग" आप कम से कम (20 सेकंड) को डुप्लिकेट का पता लगाने विंडो सेट करने की सोच सकते हैं करना चाहते हैं: इस के आसपास पाने के लिए, हम एक "ब्रेकर" की शुरुआत की। (व्यक्तिगत रूप से, मुझे 5 सेकंड के रूप में कम दहलीज देखना अच्छा लगेगा)।

वर्तमान श्रेणियों की अनुमति 20 सेकंड से 7 दिन है।

+2

FWIW - उच्च प्रदर्शन स्थितियों में, "यू" प्रारूप में केवल सेकंड शामिल हैं। मैंने बस एक बग तय किया जहां यह पर्याप्त दानेदार नहीं था। मेरा फिक्स उपयोग करना था: DateTime.Now.ToString ("yyyy-m-ddThh: mm: ss.ff") इसके बजाए। यह "यू" जैसा ही है लेकिन 1/100 वें में उप-सेकंड जोड़ता है। – ProVega

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