public GithubClientActor() { _logger = Context.GetLogger(); var actorsList = Constants.GetTokens().Select(pt => Context.ActorOf(Propmaster.GithubWorkerActor(pt))).ToList(); _githubWorkerActor = Context.ActorOf(Props.Empty.WithRouter(routerConfig: new RoundRobinGroup(actorsList.Select(x => x.Path.ToString()).ToList())), "githubWorker"); Receive <Messages.Messages.LogRequestsMadeSoFar>(m => { _logger.Info("So far, we've queued {numberOfGithubRequests} requests to the Github API", _numberOfGithubRequestsMade); }); Receive <Messages.Messages.RetrieveRepos>(msg => { _numberOfGithubRequestsMade++; _githubWorkerActor.Forward(msg); }); Receive <Messages.Messages.RetrieveLabels>(msg => { _numberOfGithubRequestsMade++; _githubWorkerActor.Forward(msg); }); Receive <Messages.Messages.GetIssueCountPerLabel>(msg => { _numberOfGithubRequestsMade++; _githubWorkerActor.Forward(msg); }); _logger.Info("GithubClientActor created and sitting at {clientActorPath}", Self.Path); _logger.Info("Scheduling messages every 5 seconds to tell us how many requests we've made so far.", Self.Path); Context.System.Scheduler.ScheduleTellRepeatedly(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(5), Self, new Messages.Messages.LogRequestsMadeSoFar(), Self); }
private void Normal() { Receive <Messages.Messages.RetrieveRepos>(msg => { _githubClient.Tell(msg); }); Receive <Messages.Messages.ReposForOrganization>(msg => { foreach (var repo in msg.Repositories) { Context.ActorOf(Propmaster.GithubRepoActor(repo), repo.RepoName); } }); }