akka 不可序列化的'Props'是反模式吗?

uidvcgyl  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(171)

示例:
假设我有一个参与者管理与某个外部服务的通信,所以它内部有一个Client对象,用于向外部服务发出请求。为了避免这个参与者成为一个整体,我可能希望创建子参与者来处理不同的交互部分:维护服务的心跳、发出和协调复杂的请求等。这些子执行元将需要对服务的Client的引用。
假设这些客户端对象不太可能是可序列化的,并且可能是有状态的,例如包含连接状态,那么通过Props将它们传递给子参与者是否是一种反模式?Akka文档似乎强烈鼓励维护可序列化的属性,但在这种情况下,这似乎是非常有限的。

pkwftd7m

pkwftd7m1#

Akka文档似乎强烈鼓励维护可序列化的道具
我不知道这个建议,你介意分享问题中的链接吗?
根据我的经验,从父角色向子角色传递这些Client引用是很常见的。有时候,为了便于单元测试,我可能会选择传递确切的方法(函数)而不是Client引用。只要您没有跨越网络边界生成角色,我看不出有什么理由认为这是一件坏事。
关于您描述的Client对象,对于网络级别的内容(例如,连接状态等),我将利用akka-http Client API。如果您要保留应用程序级别的内容,我希望有一个单独的actor专门用于此类用途。如果您有Akka actor,则将应用程序状态保留在非actor中对我来说听起来有点反模式,Akka actor是为托管状态而设计的。

相关问题