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

阿卡河托马特

漆雕和雅
2023-03-14

我正在尝试了解akka流媒体中的toMat。例如:

val sink1:Sink[Int, Future[Int]]=Sink.fold[Int,Int](0)(_ + _)

val flow=Flow[Int].fold[Int](0){(x,y)=> x+y}

val runnable = Source (1 to 10).viaMat(flow)(Keep.right).toMat(sink1)(Keep.both)
  1. viaMat vs via有什么用

谢谢你,阿伦

共有2个答案

拓拔富
2023-03-14

我可以从akka用户组中得到一些细节

https://groups.google.com/forum/#!topic/akka user/Ofnx_XzWrTU

杜良骏
2023-03-14

>

  • via只是通往viaMat的捷径(…)(Keep.left),事实上这就是它的实现方式:override def via[T,Mat2](flow:Graph[FlowShape[Out,T,Mat2]):Repr[T]=viaMat(flow)(Keep.left)

    toMat与viaMat相同,但对于接收器,它允许您从左侧(源/流)或右侧(接收器)或两者保留物化值

    Keep.both只是(a: A, b: B)=的别名

    我将剖析你的代码行:

    // you're keeping the materialized value of flow
    val source2 = Source (1 to 10).viaMat(flow)(Keep.right)
    // you're keeping both materialized values, i.e. the one of flow from previous step
    // and the one o sink.     
    val runnableGraph = source2.toMat(sink)(Keep.both) 
    runnableGraph.run() // returns a tuple (flowMatVal, sinkMatVal)
    

    当连接流的两个部分(即源和流/汇或流和汇)时,每个部分都有一个在运行流时得到的物化值。与via/to组合时的默认行为是保留左侧。如果使用viaMat/toMat,则可以选择保留正确的物化值,或者将它们作为元组。

  •  类似资料:
    • 从2.6开始,我在这一行收到了弃用警告: 警告: 对象ActorMaterializer中的方法apply已被弃用(从2.6.0开始):使用具有流属性或配置设置的系统范围的materializer来更改默认值 我不明白那个信息,我该怎么办?什么是“全系统物化器”,它位于某个akka包中?

    • 托马斯(Thomas)写入规则为协议提供了可序列化顺序的保证。 它改进了基本时间戳排序算法。 基本的托马斯写规则如下: 如果,则事务T被中止并回滚,并且操作被拒绝。 如果则不执行事务的操作并继续处理。 如果条件1和条件2都不发生,则允许通过事务Ti执行WRITE操作并将设置为。 如果使用托马斯写规则,那么可以允许一些可序列化的时间表,如同给定图中的时间表所示,不会发生序列化冲突: 图:不可冲突序列

    • 客户端开发,主要是因为笔试做太差,然后约个手撕面 面试时长:30min 面试内容: * 手撕:数组中找两个数和为目标 * 手撕:未排序数组找到未出现最小正整数 * 客户端开发有什么了解 * IOS开发需要学什么? 反问: * 后面还有两轮技术面+hr面 * 综合排序,从几百个一面的选几个进二面

    • 我刚开始接受Tricentis Tosca Automation specialist level 2培训,在实例化模板后陷入困境,我在scratchbook中遇到以下错误: 有人能告诉我我应该在哪里更正吗?

    • 我正在使用Magento 1.7.0.2,并注意到我的低股票报告总是空白。我需要做什么才能让这份报告显示我的库存水平?我有Magento设置来管理我的库存,我现在有大约100种产品在商店里。谢了!

    • 问题内容: 当我在Android上运行使用Akka的应用程序时,收到以下异常: 在actor系统创建期间抛出此异常: 我以为proguard删除了一个构造函数,所以我在proguard.cfg中添加了以下行: 但这没有帮助。 我究竟做错了什么? 问题答案: 您的具有以下签名的构造函数之一不公开或不存在: