Akka群集分片-群集中的不同实体可以相互通信吗?

时间:2020-07-20 03:41:43

标签: akka akka-cluster akka-persistence

有关使用Akka进行群集分片的所有资料,都意味着从群集外部向群集中的实体发送消息。但是,同一集群的不同分片区域/分片中的实体(角色)可以相互通信吗?是否有一些可用的示例代码? (关于我们如何从一个实体向集群中的另一个实体发送消息)

1 个答案:

答案 0 :(得分:1)

简短的回答是“是”。

详细说明:

您可以查看EntiryRef是已知被分片的ActorRef,因此,无论如何,您需要的是一种获取该entityRef的机制。该机制是ClusterSharding扩展。因此使用:

val sharding = ClusterSharding(system)

您将获得分片扩展,然后可以使用:

val counterOne: EntityRef[Counter.Command] = sharding.entityRefFor(TypeKey, "counter-1")