2012-11-02 37 views
6

मेरे मन में परिदृश्य यह है: सेवा बस उदाहरण के लिए संचार के लिए उपयोग की जाती है, इसलिए एक सदस्यता प्रति सेवा उदाहरण अद्वितीय है। अंत परिणाम यह है कि यदि कोई उदाहरण गर्व से बंद नहीं होता है, तो इसकी सदस्यता हटाई नहीं जाती है।स्वत: समाप्त अनाथ सदस्यता (Azure ServiceBus मैसेजिंग सदस्यता क्लाइंट)

जब कोई सेवा उदाहरण "मर जाता है" और पुनरारंभ होता है, तो सदस्यता की पिछली सामग्री अप्रासंगिक होती है और इसे त्याग दिया जा सकता है।

तो, क्या सेवा बस सदस्यता के लिए "रहने का समय" सेट करने का कोई तरीका है या कुछ कस्टम अनाथ पहचान तंत्र का उपयोग किए बिना कुछ समान अनुकरण करना है?

उत्तर

4

कि सटीक सुविधा अगले रिलीज़ में से किसी एक के लिए बैकलॉग पर है। उस ने कहा, अजीब में आप अपनी सदस्यता का नाम बनाने के लिए भूमिका पर्यावरण के लिए इंस्टेंस-आईडी का उपयोग कर सकते हैं और इस प्रकार एक पुनरारंभ करने वाला उदाहरण सदस्यता का पुन: उपयोग कर सकता है। इंस्टेंस-आईडी नाम स्थिर हैं।

संपादित करें: http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.autodeleteonidle.aspx

यह बहुत उपयोग करने के लिए आसान है (नीचे उदाहरण देखें): सुविधा मैं ठीक उसी समस्या थी, पूर्वावलोकन को सुलझाने यह 2013 की शुरुआत में जारी किया गया AutoDeleteOnIdle https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.subscriptiondescription

+0

आपके उत्तर के लिए धन्यवाद, क्लेमेंस। सब्सक्रिप्शन नाम बनाने के लिए इंस्टेंस आईडी का उपयोग करना वही है जो हम कर रहे हैं, लेकिन अभी भी सभी डीबग सत्रों से छोड़ा गया कचरा है, जिसमें पीआईडी ​​संख्याओं का उपयोग करके विकास कपड़े उदाहरण नाम उत्पन्न किए जा रहे हैं। –

+1

@ यह किसी भी विचार को जारी किया जा सकता है जब इसे जारी किया जा सकता है? –

+0

मैं यह भी देख रहा हूं कि इसे कब जारी किया जा सकता है। मेरे पास प्रति क्लाइंट Silverlight क्लाइंट सदस्यता के लिए एक समान उपयोग है। यदि आप बेवकूफ सदस्यता की तलाश करके विषय के नामों को जानते हैं तो अपने स्वयं के सफाई को रोल करने का विकल्प हो सकता है। : http://stackoverflow.com/questions/15871119/cleaning-up-stale-azure-service-bus-topic- सदस्यताएं – kjsteuer

0

है। दुर्भाग्यवश ऐसा लगता है कि यदि सदस्यता के लिए कोई संदेश प्रकाशित नहीं होता है, तो सदस्यता समय समाप्त हो जाता है, भले ही आपके पास संदेशों के लिए कुछ प्रक्रिया का इंतजार हो (Azure Servicebus AutoDeleteOnIdle के अनुसार)।

NamespaceManager manager=NamespaceManager.CreateFromConnectionString(serviceBusConnectionString); 
if(!manager.SubscriptionExists(topic,subscriptionName)) 
{ 
    manager.CreateSubscription(new SubscriptionDescription(topic,subscriptionName) { 
     AutoDeleteOnIdle=TimeSpan.FromDays(2) 
    }); 
} 
6

Azure SDK 2.0 से शुरू होने से यह अपेक्षा करता है।

इसके अलावा, मेरे परीक्षण में, अन्य रिपोर्टों के विपरीत, सदस्यता तब तक नहीं हटाई जाती जब तक कि उस सदस्यता को लंबित रिसीवर सुनता न हो।

var description = new SubscriptionDescription(topicPath, subscriptionId); 
description.AutoDeleteOnIdle = TimeSpan.FromSeconds(600); 
namespaceManager.CreateSubscription(description);