作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下简单的案例类层次结构:
sealed trait Message
case class Foo(bar: Int) extends Message
case class Baz(qux: String) extends Message
Flow[Message, Message, NotUsed]
(来自基于 Websocket 的协议(protocol),编解码器已经到位)。
Flow[Message]
Foo 和 Baz 类型的单独流,因为它们是由完全不同的路径处理的。
最佳答案
一种方法是使用创建一个包含每种消息类型的流的 RunnableGraph。
val g = RunnableGraph.fromGraph(GraphDSL.create() { implicit builder: GraphDSL.Builder[NotUsed] =>
val in = Source(...) // Some message source
val out = Sink.ignore
val foo = builder.add(Flow[Message].map (x => x match { case f@Foo(_) => f }))
val baz = builder.add(Flow[Message].map (x => x match { case b@Baz(_) => b }))
val partition = builder.add(Partition[Message](2, {
case Foo(_) => 0
case Baz(_) => 1
}))
partition ~> foo ~> // other Flow[Foo] here ~> out
partition ~> baz ~> // other Flow[Baz] here ~> out
ClosedShape
}
g.run()
关于scala - Akka Streams 按类型拆分流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40433517/
我在一个 numpy 记录数组中有数据: a = np.array([(29.40818036, '1'), (34.96458222, '2'), (16.05225074, '3'),
我是一名优秀的程序员,十分优秀!