当前位置: 首页 > 知识库问答 >
问题:

Akka在没有水流的情况下合并水槽

白永昌
2023-03-14

我使用的API接受单个AKKA接收器,并用数据填充:

def fillSink(sink:Sink[String, _])

有没有一种方法,在不深入阿卡的深度的情况下,用两个汇而不是一个汇来处理输出?

例如

val mySink1:Sink = ...
val mySink2:Sink = ...
//something
fillSink( bothSinks )

如果我可以访问fillSink方法使用的Flow,我可以使用flow.alsoTo(mySink1). to(mySink2),但流不会公开。

目前唯一的解决方法是将一个处理字符串的水槽传递给两个StringBuilder,以替换mySink1/mySink2,但这似乎违背了AKKA的观点。如果不花几天时间学习AKKA,我就不知道是否有办法将输出从接收器中分离出来。

谢谢

共有1个答案

魏刚豪
2023-03-14

combineSink操作符,它使用提供的Int组合两个或多个接收器=

def combine[T, U](first: Sink[U, _], second: Sink[U, _], rest: Sink[U, _]*)(strategy: Int => Graph[UniformFanOutShape[T, U], NotUsed]): Sink[T, NotUsed]

一个微不足道的例子:

val doubleSink = Sink.foreach[Int](i => println(s"Doubler: ${i*2}"))
val tripleSink = Sink.foreach[Int](i => println(s" Triper: ${i*3}"))

val combinedSink = Sink.combine(doubleSink, tripleSink)(Broadcast[Int](_))

Source(List(1, 2, 3)).runWith(combinedSink)

// Doubler: 2
//  Triper: 3
// Doubler: 4
//  Triper: 6
// Doubler: 6
//  Triper: 9

 类似资料:
  • 问题内容: 我有多个这样的人 它们不是嵌套的或类似的东西。基本上是不同的领域。我需要像这样在 node.js 中将它们组合为一个: 我可以很好地使用 jQuery 。这是浏览器中的一个工作示例: http://jsfiddle.net/qhoc/agp54/ 但是,如果我在 node.js中 执行此操作,则不希望加载jQuery(这有点用处,加上 node.js的jQuery 在 Windows

  • 问题内容: 这是我使用的html。 引导程序3没有容器流体和行流体。 我不能用.container类包装它,因为它将变成固定的布局。 如何使其流畅 (全页宽度) 布局? ( 不带水平滚动条 ) 这些标记。当您在结果中查看时, x滚动 条可见,因此您可以向左和向右滚动,而不应该滚动。 编辑时间: 2015年12月9日自3.1.0起,已经有答案,并且Bootstrap已经发布了此修复程序 问题答案:

  • 我正在进行drools fusion 6.2决赛,希望在流模式下发生新事件时触发规则。但规则本身并没有遭到抨击。 我的规则文件内容如下: 代码如下: 故意调用规则时会触发规则,但如果流中出现新事件,则无法触发规则。

  • 试图在我的项目中实现Drools规则,并且我试图将许多转换为Drools规则,但我不确定如何在Drools中添加条件。我的场景是这样的: 我当前的drl文件内容是这样的: 现在我想要一个conditon,如果上面所有条件都失败了,就应该执行它。用口水可以做到这一点吗?如果上述所有条件都失败了,那么其他部分应该执行,我尝试搜索,发现当前drools不支持conditon。如果是这种情况,如何实现这种

  • 作为一名开发人员,我想创建一个Maven项目,并构建一个可执行的独立JAR应用程序。(无Spring启动) 在开发和构建过程中,我想添加一个Drools Kie工件作为依赖项 将我的应用程序构建为可执行Jar并运行它。我的应用程序具有调用Drools引擎的代码: 最重要的是,在我将应用程序部署到生产环境时: 我不想在我的正式服上安装Maven 我不希望我的应用程序扫描本地或远程Maven存储库 我

  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?