मैं इवेंट सोर्सिंग के साथ CQRS पैटर्न का उपयोग करके अपने पहले आवेदन को लागू करना चाहता हूं। मैं सोच रहा हूं कि कैसे कुल जड़ों के निर्माण को ठीक से संभाला जाए। मान लीजिए कि कोई CreateItem कमांड भेजता है। इसे कैसे संभाला जाना चाहिए? इवेंट आइटम कहाँ संग्रहीत किया जाना चाहिए? एक नए आइटम की पहली घटना के रूप में? या क्या मुझे किसी प्रकार की आइटमलिस्ट इकाई चाहिए जो सभी वस्तुओं को एकत्रित करती है और इसकी घटना सूची में केवल आइटमकृत ईवेंट होते हैं?
उदी दहन का सुझाव है कि कुल जड़ें न बनाएं और हमेशा किसी तरह की लाई विधि का उपयोग करें। लेकिन मैं कुछ ऐसा कैसे प्राप्त कर सकता हूं जो नया हो और निश्चित रूप से कोई आईडी असाइन नहीं की गई है। मैं इसके पीछे के विचार को समझता हूं और यह सोचना बहुत ही उचित है कि एक नई वस्तु एक ऐसी वस्तु है जिसकी स्थिति शून्य घटनाओं से बनी है। लेकिन मुझे इसका उपयोग कैसे करना चाहिए? क्या मुझे अपनी रिपॉजिटरी में एक अलग विधि पसंद करनी चाहिए getNewItem()
या इसके बजाय मेरी get(id)
विधि को स्वीकार करना Optional<ItemId>
चाहिए?
संपादित करें: खुदाई के कुछ समय बाद मुझे अभिनेताओं का उपयोग करके उपरोक्त पैटर्न का वास्तव में दिलचस्प कार्यान्वयन मिला । लेखक कुल बनाने के बजाय, नए बनाए गए UUID के साथ कुछ प्रकार के भंडार से इसे पुनः प्राप्त करता है। इस दृष्टिकोण का दोष यह है कि वह एक अस्थायी असंगति राज्य के लिए अनुमति देता है। मैं यह भी सोच रहा हूं कि मैं delete
इस तरह के दृष्टिकोण के साथ विधि कैसे लागू कर सकता हूं । बस हटाए गए ईवेंट को एग्रीगेट की ईवेंट सूची में जोड़ें?