2012-01-04 8 views
8

मैं अपने App.config में MessageEndpointMappings अनुभाग देखता हूं और यह मुझे भ्रमित करता रहता है।संदेश EndpointMappings कैसे एक सदस्यता बनाम आउटगोइंग संदेशों को स्थापित करने के लिए पता है?

कभी-कभी ऐसा लगता है कि यह एक ग्राहक के सेट एक और कतार की सदस्यता के लिए (यह एक की तरह):

<UnicastBusConfig> 
<MessageEndpointMappings>  
    <add Messages="MyServiceBus.MessageHub.Contracts" Endpoint="MessageHub"/> 
</MessageEndpointMappings> 
</UnicastBusConfig> 

लेकिन दूसरी बार ऐसा अन्य कतारों को बाहर जाने वाले संदेशों को कॉन्फ़िगर करने के लिए इस्तेमाल किया जा रहा है:

<UnicastBusConfig> 
<MessageEndpointMappings>  
    <add Messages="ServiceBus.MessageHub.InternalMessages" Endpoint="MessageHub"/> 
</MessageEndpointMappings> 
</UnicastBusConfig> 

लेकिन वास्तव में, उनमें से दोनों के बीच कोई अंतर नहीं है। तो यह कैसे पता चलता है कि सदस्यता कब सेट करें और संदेश भेजने के लिए कब सेटअप करें?

या क्या यह वास्तव में हर समय कर रहा है और मैं बस दोनों का उपयोग नहीं करता हूं?

उत्तर

19

अनिवार्य रूप से, क्या आप MessageEndpointMappings तत्व के साथ घोषणा कर रहे, "जो मालिक निर्दिष्ट संदेशों के है?" है नहीं संदेश प्रवाह, क्योंकि उस संदेशों Send टी या Publish घ प्राप्त है कि क्या से निर्धारित होता है -

इसे देखने के लिए एक और तरीका है, कि इस की दिशा सेवा निर्भरता है।

इसलिए, संदेश भेजने और किसी दिए गए सेवा से संदेशों की सदस्यता लेने में सक्षम होने के लिए, आप प्रेषक/ग्राहक अंत में एक एंडपॉइंट मैपिंग घोषित करते हैं।

और तब, जब प्रेषक/ग्राहक कि समाप्ति बिंदु मानचित्रण है कि एक और सेवा और संदेश है कि अंत बिंदु मानचित्रण में शामिल करने के लिए कोई हैंडलर की ओर इशारा करता है, NServiceBus काफी अच्छा स्वचालित रूप से उस संदेश की सदस्यता के लिए जब तक आप को अक्षम है (DoNotAutoSubscribe() के साथ ऑटो-सब्सक्रिप्शन) - क्योंकि, तार्किक रूप से, इसका मतलब यह होना चाहिए कि प्रेषक/ग्राहक दिए गए संदेश की सदस्यता लेना चाहता है।

जब आप इस बारे में सोचते हैं, तो मुझे लगता है कि यह समझ में आता है। आशा है कि आप भी ऐसा महसूस करेंगे :)