Akka Actor 询问和类型安全

2024-04-18

我如何使用 Akka Actor Ask 并维护类型安全?或者避免使用“询问”而使用“告诉”?

打电话时? or ask在 Akka Actor 上,Future[Any]返回,我必须通过进行显式转换future.mapTo[MyType].

我不喜欢失去这种类型的安全性。如果我直接使用 Futures(没有参与者)我可以显式返回Future[MyType]并保持类型安全。

我的具体用例涉及一个参与者将其消息委托给两个子参与者,然后聚合这些参与者的结果并将其返回给父级的发送者。我父母的接收方法看起来与 Akka 文档中的这种方法类似:

http://doc.akka.io/docs/akka/2.0/scala/futures.html#For_Compressives http://doc.akka.io/docs/akka/2.0/scala/futures.html#For_Comprehensions

val f1 = actor1 ? msg
val f2 = actor2 ? msg

val f3 = for {
  a ← f1.mapTo[Int]
  b ← f2.mapTo[Int]
  c ← ask(actor3, (a + b)).mapTo[Int]
} yield c

有没有更好的方法来实现我的用例?


我想发布一个新答案,因为 @Roland Kuhn 最近为此提出了一个新的解决方案,称为类型化通道:

val f: Future[MyType] = actor <-?- message
  • 罗兰的演讲 http://www.youtube.com/watch?v=PCk2SHufw3E
  • 在 Akka 文档中 http://doc.akka.io/docs/akka/2.3-M2/scala/typed-channels.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Akka Actor 询问和类型安全 的相关文章

随机推荐

  • 根据浏览器分辨率设置页面内容

    Here is my default browser size And my QR code is at right place When i re size my browser I got this one But here my QR
  • 如何在 Nginx 中将会话/cookie 从主域传递到子域?

    因此 我的主域中有一个子域的 iframe 页面 并且该子域页面需要用户登录并具有要访问的成员资格 基本上我需要将会话变量和 cookie 传递到子域以便加载 iframe 我怎样才能在 Nginx 中实现这一目标 饼干有一个domain属
  • 在 c# .Net 中创建基于索引的类

    我有一些类 想使用索引或类似的东西访问它们的属性 ClassObject 0 或者更好的是ClassObject PropName 而不是这个 ClassObj PropName Thanks 您需要索引器 http msdn micros
  • 如何在VBA中创建n个数组

    我有下面的代码 它可以完美地工作并完成我需要的技巧 但是我希望这段代码运行 n 次并创建 n 个数组 我的数据集是 我的代码是 Option Explicit Private Sub Test Const startRow As Long
  • 在 Drupal 8 中按节点获取分类术语 ID

    我正在尝试按特定节点获取分类数据 如何使用 Node 对象获取分类术语 ID Drupal 版本 8 3 6 你可以这样做 termId node gt get field yourfield gt target id 然后你可以加载该术语
  • 自动引用计数下,为什么不允许retain、release、dealloc?

    当尝试使用时 retain release and dealloc在 Xcode 4 2 中使用自动引用计数构建应用程序时 我收到如下错误 自动引用计数禁止 显式消息发送 dealloc 为什么我会看到这个错误 是 retain relea
  • 只能使用releaseImplementation和debugImplementation从maven添加Kotlin Multiplatform Mobile库

    每次我将 Kotlin Multiplatform Mobile 库发布到 Maven Central 时 我似乎唯一可以在 Android 应用程序中添加 使用 Android 依赖项的方法是添加releaseImplementation
  • 如何在 Ember.js 中指定动态根 URL?

    Ember 允许在路由器上指定根 URL http emberjs com guides routing toc specifying a root url http emberjs com guides routing toc speci
  • Symfony 4. InheritanceType("JOINED") 和 ParamConverter。奇怪的现象

    我已经定义了 CoreCase 类 ORM Entity repositoryClass App Repository CoreCaseRepository ORM InheritanceType JOINED ORM Discrimina
  • 块和保留周期

    一个小问题 为什么 Xcode 会抱怨listing 1会导致保留周期 而在listing 2它不是 在这两种情况下 clients is an int实例变量 在listing 2它被分配了0 in the init method 背景信
  • Powershell命令:rm -rf

    rm是删除item 但是参数是多少 rf做或表示 每当我输入 help rf 时 它都会打印 powershell 中可用命令的完整列表 如果您输入会发生什么rm rf在 powershell 中 通过阅读周围的资料 我发现它会删除驱动器上
  • GitHub Atom - 删除编辑器中的中心线

    我刚刚下载了 GitHub Atom Editor 正在对其进行自定义 但我无法删除编辑器中间的那行 有人帮我看看如何删除那条线吗 该行由wrap guide 包提供 您可以使用以下选项来删除该行 Option 1 禁用换行指南包裹 去At
  • 使用 XML 和 XSLT 生成 SQL

    我有一个 XML 定义 其中包含一个带有子元素的元素 例如 a b b a
  • 可以用宏获取评论吗?

    我试图解析一些代码并重新格式化它们 但似乎引用只会忽略注释 有什么办法可以实现这一点吗 我想我必须深入 erlang 方面 不 您无法在宏内获取代码注释 它们永远不会成为 AST 的一部分 并且仍然被丢弃在 Elixir 的标记器中
  • 使用 CRON 作业执行 PHP 脚本 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想每天午夜运行一个 PHP 脚本
  • JPEG 标头丢失/损坏

    我有一个 130kb jpeg 图像 无法在任何程序中打开 我需要修复它 从我使用的各种图像恢复软件中 我得到的只是 图像头损坏 丢失 当我查找文件的属性时 我什至没有得到任何信息 没有尺寸等 只有文件大小 一旦图像的标头丢失 是否可以恢复
  • 如何在 Ruby 中进行模糊子字符串匹配?

    我发现了很多关于模糊匹配的链接 将一个字符串与另一个字符串进行比较 看看哪个字符串的相似度得分最高 我有一个很长的字符串 一个文档 和一个子字符串 子字符串来自原始文档 但已被转换多次 因此可能会引入奇怪的工件 例如这里有一个空格 那里有一
  • Neo4j 的数据库级验证

    我使用 Neo4j 作为我的图形数据库 假设我想限制用户名字段的长度小于10 有没有办法在数据库级别施加这样的约束 现在 您必须在应用程序级别上执行此操作 或者通过注册一个事务提交挂钩来检查该属性字段是否符合特定标准 See http do
  • 免费的 XSD 到 DTD 转换实用程序?

    我有一个 XSD XML 架构 需要将其转换为 DTD 有免费的实用程序或简单的方法来完成此任务吗 例如 XSLT Python 脚本也很受欢迎 Note 这是问题的相反方向免费 DTD 到 XSD 转换实用程序 https stackov
  • Akka Actor 询问和类型安全

    我如何使用 Akka Actor Ask 并维护类型安全 或者避免使用 询问 而使用 告诉 打电话时 or ask在 Akka Actor 上 Future Any 返回 我必须通过进行显式转换future mapTo MyType 我不喜