コード例 #1
0
 /// <summary>
 /// Registers a job with the quartz scheduler
 /// </summary>
 /// <param name="quartzFeature">The quertz feature</param>
 /// <param name="triggerFunc">the job trigger delegate</param>
 public static void RegisterJob <TJob>(this QuartzFeature quartzFeature, Func <TriggerBuilder, ITrigger> triggerFunc) where TJob : IJob
 {
     // Register job with Trigger
     quartzFeature.RegisterJob(
         triggerFunc.Invoke(TriggerBuilder.Create()),
         JobBuilder.Create <TJob>().WithIdentity(quartzFeature.GetJobIdentity <TJob>()).Build());
 }
コード例 #2
0
 /// <summary>
 /// Registers a job with the quartz scheduler
 /// </summary>
 /// <param name="quartzFeature">The quartz feature</param>
 /// <param name="trigger">the job trigger</param>
 public static void RegisterJob <TJob>(this QuartzFeature quartzFeature, ITrigger trigger) where TJob : IJob
 {
     // Register job with Trigger
     quartzFeature.RegisterJob(trigger,
                               JobBuilder.Create <TJob>()
                               .WithIdentity(quartzFeature.GetJobIdentity <TJob>()).Build());
 }
コード例 #3
0
        /// <summary>
        /// Registers a job with the quartz scheduler
        /// </summary>
        /// <typeparam name="TJob">The job type</typeparam>
        /// <param name="quartzFeature">the funq container</param>
        /// <param name="triggerFunc">the trigger delegate</param>
        /// <param name="jobDetailFunc">the jobdetail delegate</param>
        public static void RegisterJob <TJob>(this QuartzFeature quartzFeature, Func <TriggerBuilder, ITrigger> triggerFunc, Func <JobBuilder, IJobDetail> jobDetailFunc)
            where TJob : IJob
        {
            var triggers  = triggerFunc.Invoke(TriggerBuilder.Create().WithIdentity(quartzFeature.GetTriggerIdentity <TJob>()));
            var jobDetail = jobDetailFunc.Invoke(JobBuilder.Create <TJob>().WithIdentity(quartzFeature.GetJobIdentity <TJob>()));

            quartzFeature.RegisterJob(triggers, jobDetail);
        }
コード例 #4
0
        /// <summary>
        /// /// Generate a random key for the job avoiding collisions with existing keys
        /// </summary>
        /// <param name="quartzFeature">the quartz plugin</param>
        /// <typeparam name="T">the job type</typeparam>
        /// <returns>the job key</returns>
        private static JobKey GetJobIdentity <T>(this QuartzFeature quartzFeature)
        {
            var groupName   = $"{typeof(T).Namespace}";
            var jobName     = $"{typeof(T).Name}";
            var jobIdentity = JobKey.Create($"{jobName}_{NamesGenerator.GetRandomName()}", groupName);

            while (quartzFeature.Jobs.ContainsKey(jobIdentity))
            {
                jobIdentity = JobKey.Create($"{jobName}_{NamesGenerator.GetRandomName()}", groupName);
            }
            return(jobIdentity);
        }
コード例 #5
0
        /// <summary>
        /// Generate a random key for the trigger avoiding collisions with existing keys
        /// </summary>
        /// <param name="quartzFeature">the quartz plugin</param>
        /// <typeparam name="T">the job type</typeparam>
        /// <returns>the trigger key</returns>
        private static TriggerKey GetTriggerIdentity <T>(this QuartzFeature quartzFeature)
        {
            var groupName       = $"{typeof(T).Namespace}";
            var jobName         = $"{typeof(T).Name}";
            var triggerIdentity = new TriggerKey($"{jobName}_{NamesGenerator.GetRandomName()}", groupName);
            var triggers        = quartzFeature.Jobs.Values.SelectMany(x => x.Triggers.Select(k => k.Key)).ToArray();

            while (triggers.Any(k => k.Equals(triggerIdentity)))
            {
                triggerIdentity = new TriggerKey($"{jobName}_{NamesGenerator.GetRandomName()}", groupName);
            }
            return(triggerIdentity);
        }
コード例 #6
0
 /// <summary>
 /// Registers a job with the quartz scheduler
 /// </summary>
 /// <param name="quartzFeature">The quartz feature</param>
 /// <param name="trigger">the job trigger</param>
 /// <param name="jobDetail">the job detail</param>
 public static void RegisterJob(this QuartzFeature quartzFeature, ITrigger trigger, IJobDetail jobDetail)
 {
     // Add the job
     quartzFeature.AddJob(jobDetail, trigger);
 }
コード例 #7
0
 /// <summary>
 /// Registers a job with the quartz scheduler
 /// </summary>
 /// <param name="quartzFeature">The quartz feature</param>
 /// <param name="trigger">the job trigger</param>
 /// <param name="jobDetail">the job detail</param>
 public static void RegisterJob <TJob>(this QuartzFeature quartzFeature, ITrigger trigger, IJobDetail jobDetail) where TJob : IJob
 {
     // Register job with Trigger
     quartzFeature.RegisterJob(trigger, jobDetail);
 }