मैं यहां एक एज़ूर सेवा फैब्रिक एप्लिकेशन पर काम कर रहा हूं जहां मेरे पास कुछ अभिनेता हैं जिन्हें मांग पर अन्य सेवाओं से पिंग/हुक प्राप्त करने की आवश्यकता है।Azure सेवा फैब्रिक में पब/उप पैटर्न
- एक घटना रूटर अभिनेता कि में एक घटना ले जा सकते हैं और फिर उस घटना प्रकार के सभी ग्राहकों के लिए है कि घटना के वितरण की देखभाल: आवेदन घटना वितरण इंजन का एक प्रकार है कि कुछ इस तरह काम करने का इरादा है है।
- 0..N ईवेंट सदस्यता अभिनेता जिन्हें किसी भी तरह से राउटर को सूचित करने की आवश्यकता है कि वे किस तरह की घटनाओं की सदस्यता लेना चाहते हैं और वे उन्हें कैसे वितरित करना चाहते हैं (सिंक या एसिंक)।
- जब घटना राउटर अभिनेता को
MyEvent
प्रकार की घटना प्राप्त होती है, तो यह पहचान जाएगा कि ग्राहक क्या सुन रहे हैं और वे ईवेंट को कैसे वितरित करना चाहते हैं। एसिंक्रोनस डिलीवरी के लिए, एक Azure सेवा बस विषय में एक संदेश पॉप किया जाएगा। सिंक्रोनस डिलीवरी के लिए, राउटर अभिनेता सब्सक्राइब करने वाले अभिनेताओं पर सदस्यता विधि का आह्वान करेगा, उनकी प्रतिक्रिया का इंतजार कर रहा है।
इनमें से अधिकांश काफी सीधे आगे हैं, लेकिन मुझे पूरा यकीन नहीं है कि मैं इन घटनाओं के सिंक्रोनस डिलीवरी को कैसे खींचूँगा। मैं नहीं चाहता कि इवेंट राउटर अभिनेता किसी भी तरह से घटनाओं की सदस्यता लेने वाले कलाकारों में किसी भी इंटर्न के बारे में जागरूक रहें - फिर भी वर्तमान ActorProxy
कार्यान्वयन और इसी तरह, इंटरफेस तक पहुंच रखने के लिए अन्य कलाकारों पर तरीकों का आह्वान करना आवश्यक है।
कहें कि मैं इवेंट राउटर को सूचित करता हूं कि मेरा पता fabric:/MyApp/MyEventSubscriberActor
है और मैं MyEvent
पर सदस्यता लेना चाहता हूं। क्या सेवा फैब्रिक एपीआई के भीतर कोई समझदार तरीका है, मैं प्रोग्रामर के बिना उस अभिनेता पर एक विधि का आह्वान कर सकता हूं (उदाहरण के लिए OnEventAsync(MyEvent ev)
ActorProxy.Create<IMyEventSubscriberActor>()
विधि का उपयोग कर? इन एपीआई का स्रोत कोड सार्वजनिक रूप से उपलब्ध नहीं प्रतीत होता है, इसलिए मेरे पास कोई सीधा तरीका नहीं है यह जांचने के लिए कि यह हुड के तहत कैसे किया जाता है।
मैं तुम क्यों सिंक्रोनस और एसिंक्रोनस दोनों जब तक करना चाहते हैं पर थोड़ा उत्सुक हूँ कुछ घटनाओं को एक अलग एप्लिकेशन पर भेजना था जिसे आप Azure Service Bus Topic को भेजना चाहते हैं। मेरे पास अन्य अवलोकन है, एक पब/उप बनाने से स्केलेबिलिटी में आपकी मदद नहीं होगी क्योंकि राउटर अभिनेता तब तक अवरुद्ध है जब तक कि ग्राहक अभिनेता कार्य पूरा नहीं कर लेता है।क्या आपने "आग और भूलने" के बारे में सोचा है जहां ग्राहक अभिनेता एक विश्वसनीय Queue से घटनाओं को चुनते हैं। –
दरअसल मैं इस बारे में थोड़ा सोच रहा हूं; मुझे लगता है कि मैं बस सिंक्रोनस इवेंट डिलीवरी कर बोर्ड के साथ कर रहा हूं और उसके बाद ग्राहक खुद ही यह निर्धारित कर सकता है कि क्या उसे तुरंत ईवेंट को संसाधित करना चाहिए या इसे एसिंक प्रोसेसिंग के लिए विश्वसनीय विश्वसनीय पर पॉप करें। इनपुट के लिए धन्यवाद। –
मुझे लगता है कि आग के साथ और एसिंक्रोनस विधि भूल जाते हैं, तो आप सिंक्रोनस तरीके से संसाधित करने की तुलना में अधिक घटनाओं को संसाधित करने में सक्षम हो सकते हैं। –