我在群集中的演员之间进行沟通时遇到了一些问题。
我的测试项目在下面有这个结构。
TestJob [C#控制台项目]
MainProject [C#控制台项目] //注意:我将此服务配置为种子节点。我没有使用灯塔。
注意:我不想将actor放在共享项目或主项目中。应该进行测试工作的演员应该在“TestJob”项目下。
我已经关注了这篇文章http://getakka.net/docs/clustering/cluster-overview和视频。我确实根据文章启用了Akka.Cluster。我可以运行两个控制台项目但是当我试图从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项目)
还有一个问题:在使用群集时我们仍然可以使用actor吗?
var actorSelection = Context.ActorSelection("akka.tcp://MyBackendProcessingSystem@127.0.0.1:2553/user/BackEndJobAActor"); //This can come from Model
actorSelection.Tell("Yo yo!");
答案 0 :(得分:1)
不用担心!
我自己设法解决了这个问题。您可以在我的临时仓库https://github.com/michaelsync/APMDemo/tree/allinoneproject中看到修复程序。
问题在于我不知道我需要使用IConsistentHashable以一致路由发送消息。我继续发送字符串并且没有工作。
当地路线已关闭。