Versions Compared

Key

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

...

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

눈치 채고 있는지 모르겠지만, 스트림에서 더 많은 일을 하고 있지만

흐름처리에 사용되는 코드를 점점 줄이고 있습니다.

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

한가지는 명확합니다. 비동기적으로 여러차례 발생하는 변환을 어떠한 out에 연결하는 코드를

직접 모두 작성하는것은 분명 훨씬더 많은 코드를 사용하고 직관적이지 못할것입니다.