【发布时间】:2021-02-11 10:27:48
【问题描述】:
有没有办法根据一些外部条件复用两个或多个 Akka 源或流?它可能看起来像这样:
def cond: Boolean = ???
val src1 = Source.fromIterator(i1)
val src2 = Source.fromIterator(i2)
val src3 = Source.mux(src1, src2, cond)
取决于cond 结果src3 应该包含来自src1 的项目或来自src2 的项目,不能同时包含两者。
我发现似乎是相反的操作divertTo。同时,似乎没有一个扇入操作支持条件合并。
【问题讨论】:
-
什么意思?您能否添加示例输入和所需的输出?
-
不确定还需要什么示例。假设有两个独立的事件源,我想根据通常应该在事件本身外部的动态条件,将它们组合成只有一个被发送到下游。
-
假设
src1 = Source(1, 2, 3)、src2 = Source(2, 3, 4)和cond = _ % 2 == 0所以src3 = Source(2, 2, 4)你期待这样的事情吗? -
没有。我的意思是,不一定。条件不必依赖于源中的项目。假设,我们有两个独立的无限流,A 和 B。假设每天下午 5 点到 7 点之间,我只想接收来自流 A 的消息,而剩下的时间 - 来自流 B。事实上现在我考虑了一下,也许一种方法是用一些 id 压缩每个源,然后合并它们,然后通过这个 id 过滤结果源。我不确定这是否是正确的方法。
-
所以请像您在上一条评论中所做的那样详细说明,并创建minimal reproducible example,以便我们更好地了解如何回答您的问题。
标签: scala akka akka-stream