Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNamerunnablegraph
simpleViewerfalse
width
diagramWidth402
revision34

스트림처리가 다소 초기개념을 잡기 어려운점이 있지만 

...

정의하는것입니다. 데이터의 흐름이 시작하여 종착지까지 도착하는것을 정의하는

최소단위가 RunnableGraph 입니다.

스트림처리의 확장

Image Removed

스트림처리는 AKKA의 주제에서도 광범위하고 어렵습니다.

배관공 게임도 분명 끝판 스테이지는 어렵듯이

우리는 위와같이 복잡한 스트림처리를 단순화하기위해 스트림의 결합요소에대해

...


다양한 소스/싱크처리

Code Block
languagec#
themeEmacs
// Create a source from an Iterable
Source.From(new List<int> {1, 2, 3});

// Create a source from a Task
Source.FromTask(Task.FromResult("Hello Streams!"));

// Create a source from a single element
Source.Single("only one element")

// an empty source
Source.Empty<int>();

// Sink that aggregates over the stream and returns a Task
// of the final result as its materialized value
Sink.Aggregate<int, int>(0, (sum, i) => sum + i);

// Sink that returns a Task as its materialized value,
// containing the first element of the stream
Sink.First<int>();

// A Sink that consumes a stream without doing anything with the elements
Sink.Ignore<int>();

// A Sink that executes a side-effecting call for every element of the stream
Sink.ForEach<string>(Console.WriteLine);


흐름처리를 조금더 명시화한 스트림처리

Code Block
languagec#
themeEmacs
actorSystem = ActorSystem.Create("ServiceB");
materializer = actorSystem.Materializer();

var flow = Flow.Create<int>().Select(x => x * 2);
var flow2 = Flow.Create<int>().Select(x => x + 3);
var runnablegraph = Source.From(Enumerable.Range(1, 10))
    .Via(flow)  //Via는 Source와 Flow를 결합하여 Source로 만듭니다. 
    .Via(flow2) //Via의 결과값이 Source이기때문에 다시 Flow와 조합이 가능
    .Where(x => x > 10 ) //Filter조건으로 10이하의 값은 버린다.
    .To( Sink.ForEach<int>(x => Console.WriteLine(x.ToString())) );

runnablegraph.Run(materializer);
Info

눈치 채고 있는지 모르겠지만, 스트림에대한 샘플코드가 점점 더 많은 일을 하고 있지만

스트림 처리에 사용되는 코드를 점점 줄어들고 있습니다.

스트림 처리가 다양한 방식으로 조합이 되어서, 직관적이고 가장 최소의 코드를 작성하는것이

어렵기도하고, 많은 연습이 필요합니다.


여기까지 하나의 입력과 출력을 사용하는 단선처리 과정에대한 스트림처리였으며

다음장부터는 여러개의 입력과 출력을 사용하여 스트림을 처리하는것에대해 살펴보겠습니다.