首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >akka切分代理不能与协调器联系

akka切分代理不能与协调器联系
EN

Stack Overflow用户
提问于 2017-06-02 10:18:14
回答 1查看 1.1K关注 0票数 2

我正在akka 2.5.1上构建一个有两种节点(前和后)的应用程序,我使用akka分片来实现负载和数据在后面节点的分布。前端节点使用碎片代理向后发送消息。碎片初始化如下:

代码语言:javascript
复制
  val renditionManager: ActorRef =
if(nodeRole == "back")
  clusterSharding.start(
    typeName = "Rendition",
    entityProps = Manger.props,
    settings = ClusterShardingSettings(system),
    extractEntityId = Manager.idExtractor,
    extractShardId = Manager.shardResolver)
else
  clusterSharding.startProxy(
    typeName = "Rendition",
    role = None,
    extractEntityId = Manager.idExtractor,
    extractShardId = Manager.shardResolver)

我收到了一些死信日志(为了简洁起见,省略大部分条目):

代码语言:javascript
复制
[info] [INFO] [06/02/2017 11:39:13.770] [wws-renditions-akka.actor.default-dispatcher-26] [akka://wws-renditions/system/sharding/RenditionCoordinator/singleton/coordinator] Message [akka.cluster.sharding.ShardCoordinator$Internal$Register] from Actor[akka.tcp://wws-renditions@127.0.0.1:2552/system/sharding/Rendition#1607279929] to Actor[akka://wws-renditions/system/sharding/RenditionCoordinator/singleton/coordinator] was not delivered. [8] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[info] [INFO] [06/02/2017 11:39:15.607] [wws-renditions-akka.actor.default-dispatcher-21] [akka://wws-renditions/system/sharding/RenditionCoordinator/singleton/coordinator] Message [akka.cluster.sharding.ShardCoordinator$Internal$RegisterProxy] from Actor[akka://wws-renditions/system/sharding/Rendition#-267271026] to Actor[akka://wws-renditions/system/sharding/RenditionCoordinator/singleton/coordinator] was not delivered. [9] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[info] [INFO] [06/02/2017 11:39:15.762] [wws-renditions-akka.actor.default-dispatcher-21] [akka://wws-renditions/system/sharding/replicator] Message [akka.cluster.ddata.Replicator$Internal$Status] from Actor[akka.tcp://wws-renditions@127.0.0.1:2552/system/sharding/replicator#-126233532] to Actor[akka://wws-renditions/system/sharding/replicator] was not delivered. [10] dead letters encountered, no more dead letters will be logged. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.

如果我试图使用代理,它无法传递并显示:

代码语言:javascript
复制
[info] [WARN] [06/02/2017 12:12:28.047] [wws-renditions-akka.actor.default-dispatcher-15] [akka.tcp://wws-renditions@127.0.0.1:2551/system/sharding/Rendition] Retry request for shard [51] homes from coordinator at [Actor[akka.tcp://wws-renditions@127.0.0.1:2552/system/sharding/RenditionCoordinator/singleton/coordinator#-1550443839]]. [1] buffered messages. 

另一方面,如果我在两个节点(前面和后面)启动一个非代理碎片,它就会正常工作。

有什么建议吗?谢谢。

更新

我终于明白了它为什么试图连接到错误节点中的碎片。如果只打算在单个节点中启动一个碎片,则需要添加以下配置

代码语言:javascript
复制
akka.cluster.sharding {
  role = "yourRole"
}

这样,akka切分只会查找带有角色"yourRole“标记的节点。

代理仍然无法与碎片协调器连接并将消息传递给碎片并获得以下日志跟踪:

代码语言:javascript
复制
[WARN] [06/06/2017 12:09:25.754] [cluster-nodes-akka.actor.default-dispatcher-16] [akka.tcp://cluster-nodes@127.0.0.1:2551/system/sharding/Manager] Retry request for shard [52] homes from coordinator at [Actor[akka.tcp://cluster-nodes@127.0.0.1:2552/system/sharding/ManagerCoordinator/singleton/coordinator#-2111378619]]. [1] buffered messages.

所以帮助是很好的:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 15:13:16

明白了!

我犯了两个错误,对于第一个错误,请检查主问题中的更新部分。

第二个原因是,由于某种原因,集群中需要2个碎片区域(出于测试目的,我只使用了一个),如果在Akka文档中的某个地方说明了这一点,则不知道这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44326505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档