Skip to content

Instantly share code, notes, and snippets.

@rocketpages
Last active February 16, 2021 07:01
Show Gist options
  • Save rocketpages/2f141a41f58a29a7acc9 to your computer and use it in GitHub Desktop.
Save rocketpages/2f141a41f58a29a7acc9 to your computer and use it in GitHub Desktop.
Demonstrating a basic linear data flow using Akka Streams
import akka.actor.ActorSystem
import akka.stream._
import akka.stream.scaladsl._
// implicit actor system
implicit val system = ActorSystem("Sys")
// implicit actor materializer
implicit val materializer = ActorMaterializer()
def main(args: Array[String]): Unit = {
val g: RunnableGraph[_] = RunnableGraph.fromGraph(GraphDSL.create() {
implicit builder =>
// Source
val A: Outlet[String] = builder.add(Source.fromIterator(() => flightDelayLines)).out
val B: FlowShape[String, FlightEvent] = builder.add(csvToFlightEvent)
val C: Inlet[Any] = builder.add(Sink.ignore).in
import GraphDSL.Implicits._ // allows us to build our graph using ~> combinators
// Graph
A ~> B ~> C
ClosedShape // defines this as a "closed" graph, not exposing any inlets or outlets
})
g.run() // materializes and executes the blueprint
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment