Out
Masz rację, to jest rodzaj elementów, które są emitowane przez Source
.
Mat
Jest to rodzaj materializacji Source
„s. Zwróć uwagę, że każdy etap (Flow
s, Sink
s itp.) Również zostanie zmaterializowany. Jest to zasadniczo produkt uboczny samego etapu po jest uruchamiany.
Można to sobie wyobrazić jako środek interakcji ze sceną podczas jej działania. Patrzenie na przykłady gotowych Source
oferowanych przez Akka jest dobrym sposobem na zrozumienie tego.
Source.single
zostaną zrealizowane do NotUsed
. Nie masz zamiaru wchodzić w interakcje ze źródłem, ponieważ od razu wyprodukuje tylko jeden element, a następnie ukończy.
Source.queue
zmaterializuje się na SourceQueue
. Jest to bardziej interesujący przypadek, ponieważ możesz komunikować się ze źródłem przez komunikaty do niego. Wiadomości będą emitowane przez źródło.
Source.maybe
zmaterializuje się na Promise
. Możesz użyć kontrolki Promise
, aby emitować jeden element lub None
.
Po połączeniu różnych etapów należy pamiętać, że każdy etap może mieć potencjalnie użyteczną wartość zmaterializowaną. Możesz wybrać, które z nich zachować, używając DSL viaMat
/toMat
i Keep
. Jedna lub więcej zmaterializowanych wartości zostanie zwrócona po wywołaniu run()
na skomponowanym wykresie.
przyjrzeniu typów w poniższych przykładach jest najlepszym sposobem, aby dostać sens API:
val source: Source[Int, MatSrc]
val sink: Sink[Int, MatSnk]
val matSrc: MatSrc = source.toMat(sink)(Keep.left).run()
val matSnk: MatSnk = source.toMat(sink)(Keep.right).run()
val (m1: MatSrc, m2: MatSnk) = source.toMat(sink)(Keep.both).run()
val n: NotUsed = source.toMat(sink)(Keep.none).run()
Uwaga że bardziej zwięzłe DSL, które można znaleźć w wielu przykład jest rzeczywiście skrót dla powyższego, gdzie zachowana jest tylko zmaterializowana wartość ostatniego etapu (np. zlew).
val mat3: Mat3 = source.viaMat(flow)(Keep.right).toMat(sink)(Keep.right).run()
jest taka sama jak
val mat3: Mat3 = source.via(flow).runWith(sink)
Zobacz docs poniżej do dalszego czytania.
http://doc.akka.io/docs/akka/2.4/java/stream/stream-quickstart.html#Materialized_values