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 g = RunnableGraph.FromGraph(GraphDsl.Create(builder =>
{
    var source = Source.From(Enumerable.Range(1, 10));
    var sink = Sink.Ignore<int>().MapMaterializedValue(_ => NotUsed.Instance);                
    var sinkConsole = Sink.ForEach<int>(x=>Console.WriteLine(x.ToString()))
        .MapMaterializedValue(_ => NotUsed.Instance);

    var broadcast = builder.Add(new Broadcast<int>(2));
    var merge = builder.Add(new Merge<int>(2));

    var f1 = Flow.Create<int>().Select(x => x + 10);
    var f2 = Flow.Create<int>().Select(x => x + 10);
    var f3 = Flow.Create<int>().Select(x => x + 10);
    var f4 = Flow.Create<int>().Select(x => x + 10);

    builder.From(source).Via(f1).Via(broadcast).Via(f2).Via(merge).Via(f3).To(sinkConsole);
    builder.From(broadcast).Via(f4).To(merge);

    return ClosedShape.Instance;
}));

g.Run(materializer);
Expand
titleresult

31
31
32
32
33
33
34
34
35
35
36
36
37
37
38
38
39
39
40
40



Image Added

  • 녹색: 왼쪽에서 오른쪽으로 흐르는 하나의 흐름(혹은 위에서 아래로)
  • 노랑: 분기가 갈라지거나 합해지는 구간(  bcast : out이 2개 , merger : in 이 2개 )
  • 레드:  분기 처리


스트림처리가 Source에서 발생을 하여, 분기가 발생한후 merge지점에서 다시 같이 흐르기 시작하여

결과처리가 됩니다. 약간 익숙하지 않을수 있지만, 그래프의 요소와 작성되는 코드의 요소가 정확하게

일치하며 실제로 그래프와 동일하게 작동됩니다.