using System.Collections.Specialized;
using Quartz.Impl;
using Quartz.Impl.Triggers;
using Quartz;
namespace CallCenter.QuartzService
{
public class QuartzWorker
{
readonly IScheduler _scheduler;
public QuartzWorker()
{
var properties = new NameValueCollection();
//properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient";
// 设置线程池
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
properties["quartz.threadPool.threadCount"] = "5";
properties["quartz.threadPool.threadPriority"] = "Normal";
// 远程输出配置
properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz";
properties["quartz.scheduler.exporter.port"] = "551";
properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler";
properties["quartz.scheduler.exporter.channelType"] = "tcp";
var schedulerFactory = new StdSchedulerFactory(properties);
_scheduler = schedulerFactory.GetScheduler();
}
///
/// 添加一个任务
///
///
public void AddWork(QuartzJob job)
{
var type = job.GetType();
// 创建一个工作
var jobName = "JobName_" + type;
var jobGroup = "JobGroup_" + type;
var jobDetail = new JobDetailImpl(jobName, jobGroup, type, true, true);
// 创建一个触发器
var trigger = new CronTriggerImpl("trigger" + jobName, "triggergroup" + jobName, jobName, jobGroup, job.CronExpression);
_scheduler.AddJob(jobDetail, true);
_scheduler.ScheduleJob(trigger);
}
///
/// 开始运行
///
public void Start()
{
_scheduler.Start();
}
///
/// 停止运行
///
public void Stop()
{
_scheduler.Shutdown(true);
}
}
}