+doc: Added section about buffering
This commit is contained in:
parent
a441657ac2
commit
de982b0607
5 changed files with 153 additions and 6 deletions
|
|
@ -0,0 +1,60 @@
|
|||
package docs.stream
|
||||
|
||||
import akka.stream.{ OverflowStrategy, MaterializerSettings, FlowMaterializer }
|
||||
import akka.stream.scaladsl._
|
||||
import akka.stream.testkit.AkkaSpec
|
||||
|
||||
class StreamBuffersRateSpec extends AkkaSpec {
|
||||
implicit val mat = FlowMaterializer()
|
||||
|
||||
"Demonstrate pipelining" in {
|
||||
//#pipelining
|
||||
Source(1 to 3)
|
||||
.map { i => println(s"A: $i"); i }
|
||||
.map { i => println(s"B: $i"); i }
|
||||
.map { i => println(s"C: $i"); i }
|
||||
.runWith(Sink.ignore)
|
||||
//#pipelining
|
||||
}
|
||||
|
||||
"Demonstrate buffer sizes" in {
|
||||
//#materializer-buffer
|
||||
val materializer = FlowMaterializer(
|
||||
MaterializerSettings(system)
|
||||
.withInputBuffer(
|
||||
initialSize = 64,
|
||||
maxSize = 64))
|
||||
//#materializer-buffer
|
||||
|
||||
//#section-buffer
|
||||
val flow =
|
||||
Flow[Int]
|
||||
.section(OperationAttributes.inputBuffer(initial = 1, max = 1)) { sectionFlow =>
|
||||
// the buffer size of this map is 1
|
||||
sectionFlow.map(_ * 2)
|
||||
}
|
||||
.map(_ / 2) // the buffer size of this map is the default
|
||||
//#section-buffer
|
||||
}
|
||||
|
||||
"buffering abstraction leak" in {
|
||||
//#buffering-abstraction-leak
|
||||
import scala.concurrent.duration._
|
||||
case class Tick()
|
||||
|
||||
FlowGraph { implicit b =>
|
||||
import FlowGraphImplicits._
|
||||
|
||||
val zipper = ZipWith[Tick, Int, Int]((tick, count) => count)
|
||||
|
||||
Source(initialDelay = 1.second, interval = 1.second, () => "message!")
|
||||
.conflate(seed = (_) => 1)((count, _) => count + 1) ~> zipper.right
|
||||
|
||||
Source(initialDelay = 3.second, interval = 3.second, () => Tick()) ~> zipper.left
|
||||
|
||||
zipper.out ~> Sink.foreach(println)
|
||||
}
|
||||
//#buffering-abstraction-leak
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue