示例#1
0
        public SomeDomainService(
            IRepository <Person> personRepository,
            IRepository <Animal> animalRepository,
            IUnitOfWorkManager unitOfWorkManager,
            IDbContextProvider <AnimalDbContext> animalDbContextProvider,
            IBackgroundJobManager hangfireBackgroundJobManager,
            IDapperRepository <Person> personDapperRepository,
            IDapperRepository <Animal> animalDapperRepository,
            ICacheManager cacheManager,
            IMessageBus messageBus,
            IScheduleJobManager hangfireScheduleJobManager,
            IDapperRepository <Product> productDapperRepository,
            IDapperRepository <Mail, Guid> mailDapperRepository)
        {
            _personRepository             = personRepository;
            _animalRepository             = animalRepository;
            _unitOfWorkManager            = unitOfWorkManager;
            _animalDbContextProvider      = animalDbContextProvider;
            _hangfireBackgroundJobManager = hangfireBackgroundJobManager;
            _personDapperRepository       = personDapperRepository;
            _animalDapperRepository       = animalDapperRepository;
            _cacheManager = cacheManager;
            _messageBus   = messageBus;
            _hangfireScheduleJobManager = hangfireScheduleJobManager;
            _productDapperRepository    = productDapperRepository;
            _mailDapperRepository       = mailDapperRepository;

            Logger = NullLogger.Instance;
        }
示例#2
0
        public void Schedule <TJob>(IScheduleJobManager scheduleJobManager, int siteId, Action <TriggerBuilder> configureTrigger) where TJob : JobBase
        {
            string groupName = GetJobGroup <TJob>();
            string jobKey    = GetJobKey <TJob>(siteId);
            bool   isRunning = IsRunning <TJob>(siteId);

            if (!isRunning)
            {
                scheduleJobManager.ScheduleAsync <TJob, int>(
                    job =>
                {
                    job.WithIdentity(jobKey, groupName);
                },
                    configureTrigger,
                    siteId
                    );
            }

            var runningJob = new RunningJob
            {
                JobKey           = jobKey,
                JobGroup         = groupName,
                SiteId           = siteId,
                LastScheduleTime = DateTime.UtcNow
            };

            _runningJobCache.AddOrUpdate(jobKey, runningJob, (k, job) => { return(runningJob); });
        }
示例#3
0
 public SchedulerJob(
     IScheduleJobManager schedulerJobManager,
     ISiteSocialAccountService siteSocialAccountService
     )
 {
     _scheduleJobManager       = schedulerJobManager;
     _siteSocialAccountService = siteSocialAccountService;
 }
示例#4
0
        public SchedulerBootstrap()
        {
            var dependencyResolver = new DependencyResolver();

            dependencyResolver.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
            new ApplicationServicesRegistrar(dependencyResolver).RegisterServices();

            _scheduleJobManager = dependencyResolver.Resolve <IScheduleJobManager>();

            _scheduleJobManager.ScheduleAsync <SchedulerJob>(
                job =>
            {
                job.WithIdentity("ScheduleJobKey");
            },
                trigger =>
            {
                trigger.WithSimpleSchedule(x => x.WithIntervalInMinutes(1).RepeatForever().WithMisfireHandlingInstructionIgnoreMisfires())
                .Build();
            });
        }
示例#5
0
        public void Schedule <TJob>(IScheduleJobManager scheduleJobManager, SiteSocialAccount account, Action <TriggerBuilder> configureTrigger) where TJob : JobBase
        {
            string originalAccountId = !string.IsNullOrWhiteSpace(account.FacebookPageId) ? account.FacebookPageId : account.TwitterUserId;

            if (string.IsNullOrWhiteSpace(originalAccountId))
            {
                return;
            }

            string groupName = GetJobGroup <TJob>();
            string jobKey    = GetJobKey <TJob>(account.SiteId, originalAccountId);
            bool   isRunning = IsRunning <TJob>(account.SiteId, originalAccountId);

            if (!isRunning)
            {
                scheduleJobManager.ScheduleAsync <TJob, SiteSocialAccount>(
                    job =>
                {
                    job.WithIdentity(jobKey, groupName);
                },
                    configureTrigger,
                    account
                    );
            }

            var runningJob = new RunningJob
            {
                JobKey            = jobKey,
                JobGroup          = groupName,
                SiteId            = account.SiteId,
                OriginalAccountId = originalAccountId,
                LastScheduleTime  = DateTime.UtcNow
            };

            _runningJobCache.AddOrUpdate(jobKey, runningJob, (k, job) => { return(runningJob); });
        }
示例#6
0
 public ValuesController(IScheduleJobManager ScheduleJobManager)
 {
     this.ScheduleJobManager = ScheduleJobManager;
 }