Programming Keys is blog for all Programming and technology related articles

Tuesday, January 30, 2018

Get all jobs and triggers details in Quartz.NET 3.0

in my Previous article I have explained how we can create jobs and triggers dynamically.in this article i will show you how we can get all running jobs and triggers in quartz.net 3.x

using Quartz;
using Quartz.Impl;
using Quartz.Impl.Matchers;

    class Program
    {
            var allTriggerKeys = scheduler.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup());
            foreach (var triggerKey in allTriggerKeys.Result)
            {
             var triggerdetails =   scheduler.GetTrigger(triggerKey);
             var Jobdetails = scheduler.GetJobDetail(triggerdetails.Result.JobKey);

                Console.WriteLine("IsCompleted -" + triggerdetails.IsCompleted + " |  TriggerKey  - " + triggerdetails.Result.Key.Name + " Job key -" + triggerdetails.Result.JobKey.Name);
           
            }
}

kindly refere my Previous article for more understanding
Share:

Monday, January 29, 2018

Quartz.NET 3.0.2 Create Triggers and jobs dynamically

Quartz.NET is a pure .NET library written in C# and is a port of very popular open source Java job scheduling framework. let's see how we can create Triggers and jobs dynamically

using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class JobsAndTriggers
    {
        public string jobIdentityKey { get; set; }
        public string TriggerIdentityKey { get; set; }
        public string jobData_MethodName { get; set; }
        public int ScheduleIntervalInSec { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
           List<JobsAndTriggers> LstobjJobsAndTriggers = new List<JobsAndTriggers>();
            LstobjJobsAndTriggers.Add(new JobsAndTriggers { jobIdentityKey = "JOB1", TriggerIdentityKey = "TRIGGER1", jobData_MethodName = "JOB1_METHOD()", ScheduleIntervalInSec = 5 });
            LstobjJobsAndTriggers.Add(new JobsAndTriggers { jobIdentityKey = "JOB2", TriggerIdentityKey = "TRIGGER2", jobData_MethodName = "JOB2_METHOD()", ScheduleIntervalInSec = 10 });


            TestDemoJob1(LstobjJobsAndTriggers).GetAwaiter().GetResult();

            Console.ReadKey();

        }
        public static async Task TestDemoJob1(List<JobsAndTriggers> lstJobsAndTriggers)

        {

            IScheduler scheduler;
            IJobDetail job =null;
            ITrigger trigger = null;

            var schedulerFactory = new StdSchedulerFactory();

            scheduler = schedulerFactory.GetScheduler().Result;

            scheduler.Start().Wait();

            foreach(var JobandTrigger in lstJobsAndTriggers)
            {

          //  int ScheduleIntervalInSec = 1;//job will run every minute

            JobKey jobKey = JobKey.Create(JobandTrigger.jobIdentityKey);



             job = JobBuilder.Create<DemoJob1>().
                WithIdentity(jobKey)
                .UsingJobData("MethodName", JobandTrigger.jobData_MethodName)
                .Build();



                trigger = TriggerBuilder.Create()

                .WithIdentity(JobandTrigger.TriggerIdentityKey)

                .StartNow()

                .WithSimpleSchedule(x => x.WithIntervalInSeconds(JobandTrigger.ScheduleIntervalInSec).WithRepeatCount(1)
               // .RepeatForever()
                )

                .Build();

                await scheduler.ScheduleJob(job, trigger);

            }

         

        }
    }
    public class DemoJob1 : IJob

    {

        public Task Execute(IJobExecutionContext context)

        {

            //simple task, the job just prints current datetime in console

            //return Task.Run(() => {

            //    //Console.WriteLine(DateTime.Now.ToString());

            //});
            JobKey key = context.JobDetail.Key;

            JobDataMap dataMap = context.JobDetail.JobDataMap;

            string MethodName = dataMap.GetString("MethodName");
            Console.WriteLine(DateTime.Now.ToString() +" "+ MethodName);

            return Task.FromResult(0);

        }

    }
}

Share: