我们通过扩展EventSourcedBehavior来使用Akka Persistence的事件源。当我们创建持久化参与者时,我们通过使用uuid给予它一个唯一的名称(我们在create
中构建PersistenceId
时使用的是相同的uuid,用于实体分片):
UUID uuid = UUID.randomUUID();
String name = MyBehavior.nameFor(uuid);
ActorRef<Command> actorRef =
context.spawn(MyBehavior.create(uuid), name);
稍后,当我们想向参与者发送更多命令时,我们希望从上下文中获得一个ActorRef<Command>
,因为spawn
返回的actorRef
对象引用不再在作用域中。
我们不能使用context.getChild(name)
,因为它返回ActorRef<Void>
。
我们还考虑了Receponist的参与者发现功能,但文档显示它无法扩展到任何数量的参与者:
https://doc.akka.io/docs/akka/current/typed/actor-discovery.html#receptionist-scalability
另一方面,类型化的中不支持ActorSelection,如以下链接所示:
https://doc.akka.io/docs/akka/current/typed/from-classic.html#actorselection
我们不确定这里的方法是否正确。任何帮助都将不胜感激。
2条答案
按热度按时间ar5n3qh51#
如果我没理解错你的问题的话,你想访问你之前衍生的演员的ActorRef。
每当执行元死亡时,还必须移除引用。
whlutmcx2#
在一个类型化的系统中,处理持久化参与者的正确方法是将
EntityRef
与ClusterSharding
一起使用,如下面链接的示例所示:https://doc.akka.io/docs/akka/current/typed/cluster-sharding.html#persistence-example