0

クラスター内のアクター間の通信に問題があります。

私のテストプロジェクトには、以下の構造があります。

TestJob [C# コンソール プロジェクト]

  • TestJobService.cs
  • TestJobActor

MainProject [C# コンソール プロジェクト] //注: このサービスをシード ノードとして構成しました。灯台は使いませんでした。

  • MainService
  • JobManagerActor

注: アクターを共有プロジェクトまたはメイン プロジェクトに配置したくありません。テスト ジョブを実行することになっているアクターは、「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 プロジェクト)

もう 1 つ質問があります。クラスターを使用している場合でも、アクターの選択を使用できますか?

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

1 に答える 1