Scala 如何合并两个有序的akka流以保存订单

Scala 如何合并两个有序的akka流以保存订单,scala,akka,streaming,akka-stream,Scala,Akka,Streaming,Akka Stream,假设我们有两个不同的有序akka流源: val source1: Source[Int, NotUsed] = Source(List(1, 12, 18)) val source2: Source[Int, NotUsed] = Source(List(10, 20, 30)) 我们如何合并这些源,使它们在生成的流中也被排序 val mergedOrderedStream: Source[Int, NotUsed] = ??? mergedOrderedStream.runFo

假设我们有两个不同的有序akka流源:

  val source1: Source[Int, NotUsed] = Source(List(1, 12, 18))
  val source2: Source[Int, NotUsed] = Source(List(10, 20, 30))
我们如何合并这些源,使它们在生成的流中也被排序

val mergedOrderedStream: Source[Int, NotUsed] = ???

  mergedOrderedStream.runForeach(println)
  // Expected output:
  //  1
  //  10
  //  12
  //  18
  //  20
  //  30

您应该使用源#合并排序

  val source1: Source[Int, NotUsed] = Source(List(1, 12, 18))
  val source2: Source[Int, NotUsed] = Source(List(10, 20, 30))

  val mergedOrderedStream: Source[Int, NotUsed] = source1.mergeSorted(source2)

  mergedOrderedStream.runForeach(println)
  // prints
  //  1
  //  10
  //  12
  //  18
  //  20
  //  30

如果其中一个
包含较少的元素,那么“输出”中会出现什么情况?