2009-08-21 12 views
6

कोई सेवा ब्रोकर में वार्तालाप समूहों की व्याख्या कर सकता है?एसक्यूएल सर्वर सेवा ब्रोकर वार्तालाप समूह

वर्तमान में, मैं सेवा ब्रोकर का उपयोग एक SQL सर्वर से दूसरे संदेश भेजने के लिए कर रहा हूं। प्रेषण सर्वर पर, मैं संदेशों को सहसंबंधित करने की कोशिश कर रहा हूं ताकि उन्हें प्राप्त करने वाले पक्ष पर धारावाहिक में संसाधित किया जा सके। प्रलेखन के आधार पर, वार्तालाप समूह इसके लिए एकदम सही फिट प्रतीत होते हैं, लेकिन प्राप्तकर्ता सर्वर पर, संदेशों को संदेश भेजने के दौरान निर्दिष्ट किए गए संदेशों से संदेशों को एक अलग वार्तालाप समूह में असाइन किया जाता है।

मैं वेब के आसपास खोज है और देखा कि इस व्यवहार का इरादा किया जा रहा है (http://social.msdn.microsoft.com/forums/en-US/sqlservicebroker/thread/baf48074-6804-43ab-844a-cb28a6dce02b/), लेकिन फिर मैं से (http://msdn.microsoft.com/en-us/library/ms178624.aspx)

WAITFOR( 
    GET CONVERSATION GROUP @conversation_group_id FROM [dbo].[ReceiveQueue] 
) 

बातचीत तो वाक्य रचना की उपयोगिता के बारे में उलझन में हूँ समूह प्रेषक से संदेश के साथ नहीं आया है और उसी वार्तालाप समूह आईडी के साथ भेजे गए संदेशों में प्राप्त पक्ष पर एक ही वार्तालाप समूह आईडी नहीं है, ऊपर दिए गए कोड का बिंदु क्या है?

उत्तर

18

वार्तालाप समूह लॉकिंग के लिए उपयोग किए जाने वाले स्थानीय प्राइमेटिव हैं। किसी वार्तालाप समूह के संदेशों में कोई ऑर्डर गारंटी नहीं होती है, और वार्तालाप समूह तार भर में बहते नहीं हैं।

संदेश ब्रोकर द्वारा वार्तालाप के भीतर संदेश आदेश की गारंटी है। तो प्रसंस्करण में corrleated संदेशों के आदेश को संरक्षित करने के लिए, उन्हें एक ही बातचीत पर भेजें।

बातचीत समूहों को एक-दूसरे से संबंधित बातचीत के सेट को समूहबद्ध करने के लिए आवश्यक है। GET CONVERSATION GROUP और RECEIVE क्रियाओं दोनों गारंटी देते हैं कि वे एक संपूर्ण अभिसरण समूह को लॉक करेंगे, इस प्रकार किसी अन्य थ्रेड को संबंधित संदेशों से संसाधित करने से रोकें। उदाहरण के लिए एक यात्रा साइट पर विचार करें। यह छुट्टी पैकेज बुक करने के अनुरोध के साथ एक संदेश प्राप्त करता है। नतीजतन यह एक होटल बुकिंग सेवा के साथ वार्तालाप शुरू करता है और एक कमरा आरक्षित करने का अनुरोध भेजता है, यह एक एयरलाइन आरक्षण सेवा के साथ वार्तालाप शुरू करता है और यात्रा आरक्षण मांगता है, यह कार किराए पर लेने वाली एजेंसी सेवा के साथ वार्तालाप शुरू करता है और पूछता है कार आरक्षण इन तीनों नई वार्तालापों ने सभी शुरुआती वार्तालाप के साथ उसी समूह में हैं, जिस पर अनुरोध प्राप्त हुआ था (एप्लिकेशन ने BEGIN DIALOG के सभी 3ों पर क्लॉज का उपयोग किया है)। यह तब कतार में संदेशों को संसाधित करने के लिए प्रतिबद्ध और आगे बढ़ता है। बाद में इन 3 सहसंबंधित अनुरोधों से प्रतिक्रियाएं बहुत यादृच्छिक समय पर शुरू हो रही हैं। कहें होटल resposnse पहले आता है। संदेश आवेदक द्वारा उठाया जाता है और यह होटल से प्रतिक्रिया के साथ अनुरोध की स्थिति को अद्यतन करने के लिए आगे बढ़ता है। साथ ही, एयरलाइन प्रतिक्रिया आती है। अगर किसी अन्य धागे को इसे लेने की अनुमति दी जाएगी, तो यह की स्थिति अनुरोध की स्थिति को अपडेट करने का प्रयास करेगा, जिसके परिणामस्वरूप थ्रेडिंग या यहां तक ​​कि थ्रेड के खिलाफ डेडलॉक भी हो रहा है होटल प्रतिक्रिया। जब होटल प्रतिक्रिया संसाधित होती है, तो धागा पूरे वार्तालाप समूह को अनलॉक करता है और इस प्रकार एयरलाइन प्रतिक्रिया लेने और इसे संसाधित करने के लिए किसी भी थ्रेड (स्वयं सहित) की अनुमति देता है।

+1

धन्यवाद। यह वेब पर सबसे अच्छी व्याख्या के बारे में है। शायद यह सिर्फ मुझे है लेकिन इस सुविधा पर माइक्रोसॉफ्ट एमएसडीएन दस्तावेज बहुत अस्पष्ट लगता है। प्राप्त कतार पर संदेशों की प्रसंस्करण को क्रमबद्ध करने के तरीके पर कोई सुझाव? मैं संदेश भेज रहा हूं जो संभावित रूप से प्राप्त पक्ष पर एक रिकॉर्ड अपडेट कर सकता है। ये संदेश विभिन्न स्रोतों से हैं और इस तरह वास्तव में एक ही वार्तालाप का हिस्सा नहीं हो सकते हैं। मुझे यह सुनिश्चित करने की ज़रूरत है कि प्राप्त पक्ष पर एक-दूसरे से जुड़े संदेश क्रमशः और धारावाहिक में संसाधित किए जाते हैं। –

+2

लक्ष्य मूव कनवर्सन का उपयोग कर बातचीत को समूहबद्ध कर सकता है। इसके बाद यह किसी भी 'नई' बातचीत को इसके उचित समूह में स्थानांतरित कर सकता है।एक और विकल्प संवाद शुरूआत को उलटना है: 'बैक-एंड' संवाद (ओं) को नियंत्रित करता है (और इसलिए उनके पक्ष में उनके समूह को नियंत्रित करता है) और 'फ्रंट एंड' संवाद के * लक्ष्य * समापन बिंदु पर भेजता है। यदि बैक-एंड अंतिम नाम/स्थान नहीं जान सकता है तो 'दीक्षा' को सामने के अंत तक एक संदेश भेजकर 'इस पते पर कृपया मुझे सब्सक्राइब करें' के साथ एक संदेश भेज दिया जा सकता है। उचित समाधान आपके परिदृश्य के विनिर्देशों पर निर्भर करता है। मुझे एक ईमेल भेजें। –

+0

हाँ, चाल बातचीत दृष्टिकोण वह है जिसे हम वर्तमान में देख रहे हैं। चिंता यह है कि चूंकि वार्तालाप वार्तालाप लक्ष्य वार्तालाप समूह को लॉक करता है और उनके वार्तालाप समूह द्वारा संदेश प्राप्त करने से जुड़े वार्तालाप समूह को ताला लगाया जाता है, इसलिए हम एक डेडलॉक स्थिति में पड़ सकते हैं। हम उस चिंता को हल करने की कोशिश कर रहे पीओसी के बीच में हैं। अंतर्दृष्टि के लिए धन्यवाद। –

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