gpt4 book ai didi

java - Akka,在使用简单的 Java 对象和 Futures 时如何保留发送者引用?

转载 作者:行者123 更新时间:2023-12-02 05:59:13 25 4
gpt4 key购买 nike

我有一个 Java 类,它创建一个主管 Actor,然后为它需要生成的每个请求创建一个子 Actor。

  1. Java 类使用 Future 从主管 Actor 获取响应
  2. Supervisor 使用告诉和发送者引用来获取子 Actor 的响应

然而,我的主管 Actor 是一个单例范围的 bean,因此每次我的 Java 类向主管发出请求时,我都需要找到一种方法来存储发送者引用。最好的方法是什么?

最佳答案

我不认为单例作用域是一个好的isea,因为Akka需要能够在异常发生时重新启动actor。这可能会导致一些奇怪的问题。我们自己使用原型(prototype)范围。

除此之外,一种可能性是通过 Actor 传递服务器来简单地解耦接收请求和发送响应,您只需使用转发而不是告诉,管道中的最后一个 Actor 将响应发送者。这样主管就不需要关心响应。显然,如果您的主管除了将响应发送给发件人之外什么都不做,那么这是理想的选择。

如果在发送响应之前需要进行一些处理,您可以创建一个临时参与者并向其传递发送者引用,并让该参与者收集结果,将响应发送到您的 future 并停止自身。如果您需要等待多个响应并将其聚合,这一点尤其有用。

您还可以将发件人引用添加到您从主管发送给 Actor 并返回给主管的消息中。简单而有效。

关于java - Akka,在使用简单的 Java 对象和 Futures 时如何保留发送者引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22808521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com