如何在 Akka.NET 中成功设置一个简单的集群单例

How to successfully set up a simple cluster singleton in Akka.NET

我 运行 遇到了一个问题,试图在 Akka.NET 集群中设置集群单例,其中有多个单例实例正在启动,并且 运行 在我的集群中.集群由 Lighthouse(种子节点)和 x 个主集群节点实例组成,其中有集群分片以及存在于该节点中的单例。

为了重现我遇到的问题,我设置了一个 example solution in GitHub 但不幸的是我在这里遇到了不同的问题,因为我总是得到 Singleton not available消息,而我的单身人士从未收到消息。这是我最初遇到的相反问题,但我还是想整理出一个集群单例的工作示例。

[DEBUG][8/22/2016 3:06:18 PM][Thread 0015][[akka://singletontest/user/my-singleton-proxy#1237572454]] Singleton not available, buffering message type [System.String]

在 Lighthouse 进程中,我看到了以下消息。

Akka.Remote.EndpointWriter: Dropping message [Akka.Actor.ActorSelectionMessage] for non-local recipient [[akka.tcp://sync@127.0.0.1:4053/]] arriving at [akka.tcp://sync@127.0.0.1:4053] inbound addresses [akka.tcp://singletontest@127.0.0.1:4053]

可能相关:

似乎唯一缺少的是我的种子节点的参与者路径中指定的参与者系统与 Lighthouse 和我的集群节点进程中指定的参与者系统名称不匹配。在确保它在所有三个地方都匹配后,集群现在按预期运行。

https://github.com/jpierson/x-akka-cluster-singleton/commit/77ae63209042841c144f69d4cd70e9925b68a79a

特别感谢Chris G. Stevens的帮助。