2015-10-30 3 views
8

मैं अकका + स्कैला का उपयोग कर सीक्यूआरएस + इवेंट सोर्सिंग का उपयोग करके बैकएंड तैयार कर रहा हूं। मुझे यकीन नहीं है कि बढ़ती स्थिति को कैसे संभाला जाए। उदाहरण के लिए, मेरे पास उपयोगकर्ताओं की बढ़ती सूची होगी। मेरी समझ के लिए, प्रत्येक उपयोगकर्ता को उपयोगकर्ता द्वारा बनाए गए ईवेंट के बाद बनाया जाएगा, ऐसे ईवेंट PersistentActor द्वारा फिर से चलाए जाएंगे, और उपयोगकर्ताओं को संग्रह में संग्रहीत किया जाएगा। कुछ की तरह:अक्का-दृढ़ता के साथ घटना-सोर्सिंग: सूची के रूप में राज्य बढ़ रहा है?

class UsersActor extends PersistentActor { 

    override def persistenceId = .... 

    private case class UsersState(users: List[User]) 

    private var state = UsersState() 

    .... 
} 

जाहिर है इस तरह के राज्य अंततः बहुत बड़ा हो जाना होगा इस अभिनेता से स्मृति में आयोजित होने वाले हैं, इसलिए मुझे लगता है मैं कुछ गलत कर रहा हूँ।

मुझे this उदाहरण प्रोजेक्ट मिला: यह विचार लगता है कि प्रत्येक उपयोगकर्ता को एक अलग अभिनेता द्वारा आयोजित किया जाना चाहिए, और आवश्यकतानुसार (घटना इतिहास से) लोड किया जाना चाहिए।

ऐसा करने का सही तरीका क्या है? बहुत बहुत धन्यवाद।

+0

इवेंट सोर्सिंग आवेदन के सभी हिस्सों के लिए उपयुक्त नहीं है .. क्या आपको उपयोगकर्ताओं को लॉग इन करने या बाहर जाने के लिए क्वेरी करने के लिए सभी उपयोगकर्ताओं की सूची की आवश्यकता है? – jazmit

+0

आपकी टिप्पणी @jazmit के लिए धन्यवाद - नहीं, मुझे सभी उपयोगकर्ताओं को एक बार में "मौजूद" होने की आवश्यकता नहीं है। मैं जिस परियोजना से जुड़ा हुआ हूं उसका अध्ययन कर रहा हूं, ऐसा लगता है कि इसे सेवा या अद्यतन करने के लिए केवल उस वस्तु को "फुलाएं" की आवश्यकता है। क्या आपके पास और संकेत हैं? – ticofab

+0

हां, लेकिन बीज प्रोजेक्ट प्रति उपयोगकर्ता एक लगातार अभिनेता का उपयोग करता है .. अभी भी यह सुनिश्चित नहीं है कि आप वास्तव में क्या कर रहे हैं, केवल एक चीज जो मैं कह सकता हूं वह है कि डोमेन अभिनेताओं को हमेशा बढ़ते राज्य के साथ डिजाइन करना नहीं है .. – jazmit

उत्तर

1

उत्तर यह है: प्रत्येक कुल/इकाई (मेरे उदाहरण में, प्रत्येक उपयोगकर्ता) को अपना स्वयं का अभिनेता मिल जाता है, जो उस विशेष इकाई के लिए राज्य को एम्बेड करता है और वह केवल।

+0

+1। चर्चा के लिए जगह नहीं है, लेकिन क्या आप 'PersistentActor' की स्थिति के आधार पर व्यवहार को संशोधित करते हैं? अर्थात। यदि 'UserCreated' नामक ईवेंट जारी रहता है, तो क्या आप व्यवहार को संशोधित करते हैं ताकि केवल' UserRemoved' और 'UserUpdated' ईवेंट जारी रहें? यानी यदि 'उपयोगकर्ता द्वारा निकाला गया' कार्यक्रम जारी रहता है कि उस विशिष्ट दृढ़ता आईडी वाले किसी अभिनेता के लिए अब भी कोई अन्य घटना नहीं रह सकती है। –

+1

दरअसल, मैं यही कर रहा हूं: राज्य के अनुसार व्यवहार को संशोधित करें। – ticofab

+0

आपके लिए कैंडी। एक त्वरित उत्तर के लिए धन्यवाद। :) –

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