コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                }
            });
        }