如何设置Quartz.NET来安排电子邮件

时间:2011-07-11 07:59:38

标签: c# asp.net scheduled-tasks scheduling quartz.net

下载的quartz.NET库中有两个解决方案 Quartz.server.2008.sln quartz.2008.sln 。现在我必须设置重复工作。数据库中将有一个表格,其中将定义所有时间表(如月的第一个星期五,每月5个月,每个星期日上午12点......等)。我按计划执行了该方法。现在我如何使用quartz.net从数据库获取计划并设置执行方法?什么是正确的步骤?

2 个答案:

答案 0 :(得分:3)

我认为您可以创建在后台运行的Windows服务。您可以从数据库中读取scheduleFromDatabase变量,然后将其传递给Quartz。

这是来自控制台应用的一个小例子:

    static void Main(string[] args)
    {
        ISchedulerFactory schedFact = new StdSchedulerFactory();

        IScheduler sched = schedFact.GetScheduler();
        sched.Start();

        JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));

        //read this string from database
        string scheduleFromDatabase="0 11 16 ? * FRI,SUN";

        CronTrigger trigger = new CronTrigger("trigger1", null, "myJob",
                                                null,scheduleFromDatabase );

        trigger.StartTimeUtc = DateTime.UtcNow;
        trigger.Name = "myTrigger";
        sched.ScheduleJob(jobDetail, trigger); 
    }

public class HelloJob:IJob
{

    public void Execute(JobExecutionContext context)
    {
        Console.WriteLine(DateTime.Now.ToString());
        //Call here your method!
    }
}

这很有用:

Quartz.NET server documentation

答案 1 :(得分:2)

石英文档似乎确实假设每个人都知道基础知识并且只是在寻找细节。

希望以下步骤,以及Quartz文档和示例,您将能够启动项目。

步骤1:将Windows资源管理器打开到... \ Quartz.NET-1.0.3 \ database \ tables文件夹
第2步:执行适合您数据库的脚本
步骤3:将Windows资源管理器打开到... \ Quartz.NET-1.0.3 \ server \ bin \ 3.5 \ console文件夹
第4步:创建一个类库程序集并添加一个实现IJob接口的类 第5步:编辑quartz.config文件。我的下面。

  ################################################################################
  # Added by Brad Bruce
  # please refer to http://quartznet.sourceforge.net/tutorial/lesson_9.html before making changes
  ################################################################################
  quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
  quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.OracleDelegate, Quartz
  quartz.jobStore.tablePrefix = QRTZ_
  quartz.jobStore.dataSource = myDS
  quartz.dataSource.myDS.connectionString = Data Source=xe; User Id=quartz; Password=quartz;
  quartz.dataSource.myDS.provider = OracleODP-20
  quartz.jobStore.useProperties = true

步骤6:运行控制台服务器并验证虚拟作业是否正在运行
步骤7:将控制台项目复制到新项目
步骤8:修改控制台源以通过Quartz API安排作业。您将能够重复使用此项目来安排其他工作。

如果他们只添加一个项目来安排和管理工作,我认为Quartz.Net真的会起飞。