1

我正在尝试通过创建一个简单的项目来设置 akka.net 集群分片。

项目布局:

Actors - 定义一个actor和消息的类库。被其他项目引用

Inbound - 启动 ShardedRegion 并且是唯一参与集群分片的节点。并且也应该是主持协调员的人。

MessageProducer - 将仅托管 shardedregion 代理以将消息发送到 ProcessorActor。

灯塔- 种子节点

上传的图像显示协调器单例未初始化,通过共享区域代理发送的消息未传递。

根据 petabridge 的博客文章petabridge.com/blog/cluster-sharding-technical-overview-akkadotnet/,我通过设置 akka.cluster.sharding.role 将灯塔排除在参与集群分片之外,因此协调员不参与在其上创建。

不知道我错过了什么才能让它工作。

4

1 回答 1

1

这已经在 gitter 上得到了回答,但这里是 tl;dr:

  1. 分片区域代理需要与对应的分片区域共享相同的角色。否则代理可能无法找到分片协调器,因此无法找到要发送消息的分片的初始位置。
  2. IMessageExtractor.GetMessage方法用于提取实际消息,该消息将发送给分片actor。在示例中,消息提取器用于从封装消息中提取字符串属性,但接收方参与者Receive为信封设置了处理程序,而不是字符串。
于 2017-03-02T21:22:07.000 回答