无法在 Akka.Cluster 中的参与者之间进行通信
Unable to communicate between actors in Akka.Cluster
我在 Cluster 中的参与者之间进行通信时遇到了一些问题。
我的测试项目具有以下结构。
TestJob [C# 控制台项目]
- TestJobService.cs
- TestJobActor
MainProject [C# Console Project] //注意:我将此服务配置为种子节点。我没有使用灯塔。
- 主服务
- JobManagerActor
注意:我不想将演员放在共享项目或主项目中。应该做测试工作的演员应该在 "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 中看到修复。
问题是我不知道我需要使用 IConsistentHashable 以一致的方式发送消息。我继续发送字符串,但没有用。
本地路由关闭。
我在 Cluster 中的参与者之间进行通信时遇到了一些问题。
我的测试项目具有以下结构。
TestJob [C# 控制台项目]
- TestJobService.cs
- TestJobActor
MainProject [C# Console Project] //注意:我将此服务配置为种子节点。我没有使用灯塔。
- 主服务
- JobManagerActor
注意:我不想将演员放在共享项目或主项目中。应该做测试工作的演员应该在 "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 中看到修复。
问题是我不知道我需要使用 IConsistentHashable 以一致的方式发送消息。我继续发送字符串,但没有用。
本地路由关闭。