2017-05-01 14 views
5

जब एक धारा प्रवाह परिभाषा groupBy का उपयोग कर n के कुछ अधिकतम क्षमता के साथ:सबका प्रवाह पूरा करने पर अक्का स्ट्रीम 'समूहबी' क्षमता परिवर्तन?

source.groupBy(Int.MaxValue, _.key).to(Sink.actorRef) 

अगर मैं subflows कि कहने के लिए परिणाम ऊपर हुक, एक अभिनेता के सिंक, और उद्देश्यपूर्ण subflows कुछ संदेश पर समाप्त करने के लिए कारण, क्या यह groupBy क्षमता को मुक्त करेगा? क्या यह n से n-1 पर n पर जा सकता है यदि सिंक द्वारा उपप्रवाह समाप्त हो जाता है? क्या यह एक गतिशील-आश ग्राफ स्थापित करने का एक व्यवहार्य तरीका है?

उत्तर

0

के बारे में कैसे सामान्य रूप में groupBy काम करता है: हाँ, maxSubstreams क्षमता, गतिशील है अर्थात यह सक्रिय substreams की अधिकतम संख्या का प्रतिनिधित्व करता है।

GroupBy चरण प्रत्येक आंतरिक प्रवाह में प्रत्येक उपप्रवाह का संदर्भ रखता है, और जब भी यह विशिष्ट सबफ्लो पूरा हो जाता है तो इसे हटा दिया जाता है।

आपके विशिष्ट उदाहरण के संबंध में, मुझे नहीं लगता कि यह सुनिश्चित करने का एक तरीका है कि "एक सबफ्लो सिंक द्वारा समाप्त होता है"। ऐसा इसलिए है क्योंकि to(Sink.actorRef)groupBy के बाद सभी प्रवाह एक एकल अभिनेता को खिलाने जा रहे हैं।

+0

स्पष्टीकरण के लिए धन्यवाद! क्या वहां, सबफ्लो को चुपचाप बंद करने का एक अनुशंसित तरीका है? – simonl

+1

इस प्रश्न पर ठोकर खाई - http://stackoverflow.com/questions/38325210/proper-way-to-stop-akka-streams-on- शर्त; ऐसा लगता है कि मैं 'takeWhile' /' statefulMapconcat' का उपयोग करके जो कुछ हासिल करना चाहता हूं उसे प्राप्त करने में सक्षम हो सकता हूं – simonl

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