- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们通过扩展 EventSourcedBehavior 将事件源与 Akka Persistence 结合使用。当我们创建持久性 Actor 时,我们通过使用 uuid 给它一个唯一的名称(与我们在 create
中使用的相同名称来构建 PersistenceId
,用于实体分片):
UUID uuid = UUID.randomUUID();
String name = MyBehavior.nameFor(uuid);
ActorRef<Command> actorRef =
context.spawn(MyBehavior.create(uuid), name);
稍后,当我们想要向 actor 发送进一步的命令时,我们希望得到 ActorRef<Command>
从上下文来看,自从 actorRef
spawn
返回的对象引用将不再在范围内。将命令视为后续 HTTP 请求的结果。
我们不能使用context.getChild(name)
当它返回ActorRef<Void>
时.
我们还考虑过通过接待员发现参与者,但文档称它无法扩展到任意数量的参与者:
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
我们不确定这里的方法是否正确。任何帮助将不胜感激。
最佳答案
如果我正确理解你的问题,你想访问之前生成的 Actor 的 ActorRef。这是我通常做的事情。
private final Map<String, ActorRef<Command> instanceIdToActor = new HashMap<>();
private ActorRef<Command> getActorRef(String instanceId) {
ActorRef<Command> instanceActor = instanceIdToActor.get(instanceId);
if (instanceActor == null) {
instanceActor = getContext().spawn(MyBehavior.create(), instanceId);
instanceIdToActor.put(instanceId, instanceActor);
}
return instanceActor;
}
每当 Actor 死亡时,您还必须删除引用。
instanceIdToActor.remove(instanceId);
关于java - 将 ActorRef 获取到先前生成的 EventSourcedBehavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61142328/
我们通过扩展 EventSourcedBehavior 将事件源与 Akka Persistence 结合使用。当我们创建持久性 Actor 时,我们通过使用 uuid 给它一个唯一的名称(与我们在
我是一名优秀的程序员,十分优秀!