2017-05-31 7 views
0

複数のakkaアクターシステムで負荷を分割しようとしています。 残念ながら、ラウンドロビングループはリモートワーカーにメッセージを転送しません。私は俳優が活性化されているのを見ることができますが、仕事はありません。2つの異なるホスト上のラウンドロビングループが機能していません

完全なコードは、github

上で、私は私の構成で欠場する可能性のある他の設定はありますか?

private void CreateRemoteCrawlerGroup() 
     { 
      var hostname = "374110044f24"; 
      var hostname2 = "25b360699a27"; 

      var remoteAddress2 = Address.Parse($"akka.tcp://[email protected]{hostname2}:8090"); 
      var remoteScope2 = new RemoteScope(remoteAddress2); 
      var remoteCrawler1 = 
       Context.ActorOf(
      Props.Create(() => new WebCrawlerActor(new AppSettingsConfiguration(), Self)) 
      .WithRouter(new RoundRobinPool(2)) // new DefaultResizer(1, 2, messagesPerResize: 500) 
          .WithDispatcher("my-dispatcher") 
      .WithDeploy(Deploy.None.WithScope(remoteScope2)), "a"); 

      var remoteAddress = Address.Parse($"akka.tcp://[email protected]{hostname}:8090"); 

      var remoteScope = new RemoteScope(remoteAddress); 
      var remoteCrawler2 = 
       Context.ActorOf(
      Props.Create(() => new WebCrawlerActor(new AppSettingsConfiguration(), Self)) 
      .WithRouter(new RoundRobinPool(2)) // new DefaultResizer(1, 2, messagesPerResize: 500) 
          .WithDispatcher("my-dispatcher") 
      .WithDeploy(Deploy.None.WithScope(remoteScope)), "remoteCrawler01"); 

      var workers = new List<string> { remoteCrawler1.Path.ToString(), remoteCrawler2.Path.ToString() }; 
      var router = Context.ActorOf(Props.Empty.WithRouter(new RoundRobinGroup(workers)), "some-group"); 
      _actorDictionary.Add("WebCrawlerActor", router); 
     } 

答えて

0

溶液をアッカクラスタにスイッチし、代わり

var remoteEcho2 = 
       Context.ActorOf(
        Props.Create(() => new WebCrawlerActor(new AppSettingsConfiguration(), Self)) 
         .WithRouter(new ClusterRouterPool(new RoundRobinPool(5), new ClusterRouterPoolSettings(5, 1, true, "crawler"))), "WebCrawlerActor2a"); 

      _actorDictionary.Add("WebCrawlerActor", remoteEcho2); 
CLUSTRプールを使用します
関連する問題