首页 > 解决方案 > Akka Cluster Sharding - 集群内的不同实体可以相互通信吗?

问题描述

使用 Akka 进行集群分片的所有材料都暗示将消息从集群外部发送到集群中的实体。但是,同一集群的不同分片区域/分片中的实体(参与者)可以相互通信吗?是否有一些示例代码可用于此?(关于我们如何在集群中从一个实体向另一个实体发送消息)

标签: akkaakka-clusterakka-persistence

解决方案


简短的回答是“是”。

让我们详细说明:

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

val sharding = ClusterSharding(system)

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

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

推荐阅读