Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||
---|---|---|
| ||
31 |
- 녹색: 왼쪽에서 오른쪽으로 흐르는 하나의 흐름(혹은 위에서 아래로)
- 노랑: 분기가 갈라지거나 합해지는 구간( bcast : out이 2개 , merger : in 이 2개 )
- 레드: 분기 처리
스트림처리가 Source에서 발생을 하여, 분기가 발생한후 merge지점에서 다시 같이 흐르기 시작하여
결과처리가 됩니다. 약간 익숙하지 않을수 있지만, 그래프의 요소와 작성되는 코드의 요소가 정확하게
일치하며 실제로 그래프와 동일하게 작동됩니다.