Пример #1
0
        protected async override Task ExecuteJob(IJobExecutionContext context)
        {
            // schedule job for every site
            List <int> facebookSiteIds = await _siteSocialAccountService.GetFacebookSiteIdsAsync();

            if (facebookSiteIds != null && facebookSiteIds.Any())
            {
                foreach (var siteId in facebookSiteIds)
                {
                    RunningJobs.Schedule <PullTaggedVisitorPostsJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.FacebookPullTaggedVisitorPostsJobCronExpression));
                    //RunningJobs.Schedule<PullVisitorPostsFromFeedJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.FacebookPullVisitorPostsFromFeedJobCronExpression));
                    //RunningJobs.Schedule<PullMessagesJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.FacebookPullMessagesJobCronExpression));
                    RunningJobs.Schedule <GetRawDataJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.FacebookGetRawDataJobCronExpression));
                }
            }

            // schedule job for every site
            //List<int> twitterSiteIds = await _siteSocialAccountService.GetTwitterSiteIdsAsync();
            //if (twitterSiteIds != null && twitterSiteIds.Any())
            //{
            //    foreach (var siteId in twitterSiteIds)
            //    {
            //        RunningJobs.Schedule<TwitterPullTweetsJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.TwitterPullTweetsJobCronExpression));
            //        RunningJobs.Schedule<TwitterPullDirectMessagesJob>(_scheduleJobManager, siteId, CronTrigger(AppSettings.TwitterPullDirectMessagesJobCronExpression));
            //    }
            //}

            // schedule job for every twitter integration account
            List <SiteSocialAccount> twitterAccounts = await _siteSocialAccountService.GetTwitterSiteAccountsAsync();

            if (twitterAccounts != null && twitterAccounts.Any())
            {
                foreach (var twitterAccount in twitterAccounts)
                {
                    RunningJobs.Schedule <TwitterUserStreamJob>(_scheduleJobManager, twitterAccount, StartNowTrigger());
                }
            }

            RunningJobs.StopTimeoutJobs(context.Scheduler);
        }
Пример #2
0
        public void ShouldStopTimeoutRunningJobs()
        {
            // Arrange
            RunningJobs runningJobs         = new RunningJobs();
            var         scheduleManagerMock = new Mock <IScheduleJobManager>();
            var         siteSocialAccount   = new SiteSocialAccount {
                SiteId = 10000, FacebookPageId = "123"
            };
            Action <TriggerBuilder> configuerTriggerAction = t => { };
            var schedulerMock = new Mock <IScheduler>();

            schedulerMock.Setup(t => t.GetJobDetail(It.IsAny <JobKey>())).Returns(new Mock <IJobDetail>().Object);

            // Act
            runningJobs.Schedule <TestJob>(scheduleManagerMock.Object, siteSocialAccount, configuerTriggerAction);
            var runningJob = runningJobs.Get <TestJob>(siteSocialAccount.SiteId, siteSocialAccount.FacebookPageId);

            runningJob.LastScheduleTime = DateTime.UtcNow.AddSeconds(-301);
            runningJobs.StopTimeoutJobs(schedulerMock.Object);

            // Assert
            schedulerMock.Verify(t => t.DeleteJob(It.Is <JobKey>(r => r.Name == "TestJob - SiteId(10000) - OriginalId(123)")));
            Assert.False(runningJobs.IsRunning <TestJob>(10000, "123"));
        }