gpt4 book ai didi

Akka 集群感知路由器无法找到路由

转载 作者:行者123 更新时间:2023-12-04 04:37:20 24 4
gpt4 key购买 nike

关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic

6年前关闭。



Improve this question




这里贴一个小例子:http://lpaste.net/94385

我希望能够启动一个主 Dispatcher 机器作为我的集群的种子节点。 Dispatcher 有一个针对集群工作人员的集群感知路由器。我希望能够根据需要启动工作机器,并让调度路由器自动知道它们的存在,以便它可以开始向它们发送工作。

问题是,如果我先启动 Dispatcher 机器(因为它是种子节点),集群感知路由器将启动并且找不到任何路由(很公平,它们还没有启动)。文档提到了这一点:

The routee actors should be started as early as possible when starting the
actor system, because the router will try to use them as soon as the member
status is changed to 'Up'. If it is not available at that point it will be
removed from the router and it will only re-try when the cluster members are changed.

当我启动一台新的工作机器时,我可以看到它已经加入了集群,但是发送到我的路由器的任何消息都会转发到死信。我对文档中的建议并不完全清楚,因为启动新工作人员应该更改集群成员,但是无论我创建多少新工作人员,路由器仍然没有意识到它们。

如果我先启动一个工作节点,然后是调度程序,则工作人员可以很好地接收消息。

总结一下:我想要一个可以在集群中的第一个种子节点上启动的集群感知路由器。任何包含路由器路由的新节点在加入集群时都应可供路由器使用。

最佳答案

通过将配置更改为如下所示,我能够使您的示例工作:

/clusterDispatcher/clusterRouter {
router = adaptive
metrics-selector = mix
cluster {
enabled = on
routees-path = "/user/clusterWorker"
allow-local-routees = off
}
}

我所做的唯一更改是设置 allow-local-routees = off。默认情况下,它是打开的,这意味着消息也将路由到保存路由器的同一节点。但这在您的示例中不起作用,因为您没有在调度程序节点上创建 clusterWorker。

关于Akka 集群感知路由器无法找到路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com