The Akka Streams API supports two kinds of Graphs:
- Linear graphs: These graphs are simple graphs with only basic building blocks of Akka Streams (Source | Flow | Sink). They have no complexity:
![](https://static.packt-cdn.com/products/9781787288645/graphics/assets/1f235ed3-703d-4778-99cc-0ff8220b1d58.png)
- Non-linear graphs: These graphs are complex graphs with the basic building blocks of Akka Streams + Akka Streams junctions:
![](https://static.packt-cdn.com/products/9781787288645/graphics/assets/187aad22-ce43-4a6e-87a6-9ff1499d5e58.png)
To support these two kinds of Akka Streams Graphs, the Akka Streams API has the following two kinds of Graph DSL (Domain-Specific Language) APIs:
- Akka Streams DSL: This is a DSL API used for Akka Streams linear graphs, that is, only for simple graphs. It has two sets of APIs:
- Akka Streams DSL for Java
- Akka Streams DSL for Scala
- Akka Streams Graph DSL: This is a DSL API used for Akka Streams non-linear graphs, that is, only for complex graphs. Like Akka Streams DSL, this too has two sets of APIs:
- Akka Streams Graph DSL for Java
- Akka...