无法在 Akka.Cluster 中的参与者之间进行通信

Unable to communicate between actors in Akka.Cluster

我在 Cluster 中的参与者之间进行通信时遇到了一些问题。

我的测试项目具有以下结构。

TestJob [C# 控制台项目]

MainProject [C# Console Project] //注意:我将此服务配置为种子节点。我没有使用灯塔。

注意:我不想将演员放在共享项目或主项目中。应该做测试工作的演员应该在 "TestJob" 项目下。

我已经关注这篇文章 http://getakka.net/docs/clustering/cluster-overview 和视频。我确实根据文章启用了Akka.Cluster。我能够 运行 两个控制台项目,但是当我尝试 "tell" 从 JobManagerActor 到 TestJobActor 时,它不起作用。没有错误,但不起作用。

我在 MainProject 中有这个配置。

         actor {
               provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
               deployment {
            /TestJobAActor {
            router = consistent-hashing-group
                            routees.paths = ["/user/TestJobAActor"]
                    virtual-nodes-factor = 8
            cluster {
                   enabled = on
                   max-nr-of-instances-per-node = 2
                   allow-local-routees = off
                   use-role = backend
            }
            }                           
                 }
         }

这是我用来发送消息的代码。

           var backendRouter = Context.ActorOf(Props.Empty.WithRouter(new ClusterRouterGroup(new ConsistentHashingGroup("/user/TestJobAActor"),new ClusterRouterGroupSettings(10, false, "backend", ImmutableHashSet.Create("/user/TestJobAActor")))));
            backendRouter.Tell("Yo yo!");

我错过了什么?提前致谢。

注意:可以在此处找到我的具有类似结构的测试项目https://github.com/michaelsync/APMDemo。 (VS2015 项目)

还有一个问题:使用cluster的时候还可以使用actor选择吗?

            var actorSelection = Context.ActorSelection("akka.tcp://MyBackendProcessingSystem@127.0.0.1:2553/user/BackEndJobAActor"); //This can come from Model
            actorSelection.Tell("Yo yo!");

不用担心!

我设法自己修复了它。您可以在我的临时存储库 https://github.com/michaelsync/APMDemo/tree/allinoneproject 中看到修复。

  1. 问题是我不知道我需要使用 IConsistentHashable 以一致的方式发送消息。我继续发送字符串,但没有用。

  2. 本地路由关闭。