Akka-streams:如何将流连接到流?

时间:2015-08-04 05:49:50

标签: akka akka-stream

如果流程A产生

Pair<Source<ByteString,?>, Object> 

如何将此插座连接到源B上映射的Flow B入口。例如,流程B的出口将是

Pair<InputStream<Long>,Object>.

1 个答案:

答案 0 :(得分:0)

如果您获得了所提供类型的来源:

Source< Pair<Source<ByteString, BoxedUnit>, Object>, BoxedUnit> pairSource;

您还获得了将ByteString值转换为InputStream<Long>的流程:

Flow<ByteString, InputStream<Long>, ?> byteStrToInputStream;

然后可以使用flatMapConcat转换它:

Source< Pair<InputStream<Long>,Object>, BoxedUnit> inputStreamSource = 
  pairSource.flatMapConcat( pair -> {
    pair.getKey()
        .via(byteStrToInputStream)
        .map(inputStream -> ImmutablePair(inputStream, pair.getValue()))
  })

ByteStrings的每个传入源都已耗尽,并且结果连接在一起。每对的原始右侧,即Object将添加到每个InputStream。