Akka Typed中如何复用Behavior避免createReceive代码重复
完全可以实现你要的逻辑复用,Akka Typed 已经提供了原生支持将Behavior转换为Receive的API。
你只需要使用Receive.create()静态方法即可,修改后的createReceive实现如下:
@Override public Receive<Command> createReceive() { return Receive.create(something()); }
原理解释
Receive.create方法接收一个Behavior实例作为入参,会直接提取该Behavior的消息处理逻辑作为当前Actor的初始接收规则,完全不需要重复编写两遍消息匹配代码。
如果想要进一步优化避免重复构建初始Behavior实例,也可以提前缓存成成员变量:
// 提前缓存初始状态Behavior,避免每次调用重复构建 private final Behavior<Command> initialBehavior = something(); @Override public Receive<Command> createReceive() { return Receive.create(initialBehavior); }
这种方案可以彻底消除你提到的代码冗余问题,后续修改消息处理逻辑时只需要修改something()方法一处即可。
内容的提问来源于stack exchange,提问作者Florian Schaetz
相关产品推荐
相关产品推荐

