我正在当前项目中使用Quartz.NET创建调度程序.在我的情况下,所有必须创建的作业都存储在一个表中,并且有一个单独的UI,我可以在其中添加新作业或编辑现有作业.我的问题是如何将表中的所有作业提供给Quartz调度程序?我是否要查询表中的所有作业并迭代创建JobDetails和Trigger对象?在这种情况下还有更好的方法吗?
在这种情况下,我想使用RAMJobStore或AdoJobStore吗?
Lef*_*tyX 17
你可以使用AdoJobStore.
Quartz.net将使用一组带有前缀的表QRTZ_(您可以根据需要将其更改)在数据库中,以存储作业,触发器和这些对象的状态.
我想你想在你的数据库中有一个表,你将在那里保留关于你的日程表的扩展信息,对吧?
您不会直接访问Quartz.net表,因为您将使用Quartz.net提供的API.
创建作业详细信息和触发器的过程非常简单,并在教程中进行了很好的描述.
要将您的应用配置为使用AdoJobStore,您必须在app.config文件中指定一些信息.这是一个例子:
<quartz>
<add key="quartz.scheduler.instanceName" value="myApp" />
<add key="quartz.scheduler.instanceId" value="MyApp" />
<!-- Configure Thread Pool -->
<add key="quartz.threadPool.type"
value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="Normal" />
<!-- Configure Job Store -->
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type"
value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.useProperties" value="true" />
<add key="quartz.jobStore.dataSource" value="default" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.lockHandler.type"
value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
<add key="quartz.dataSource.default.connectionString"
value="Server=SVSQL2008;Database=QuartzNet1;Trusted_Connection=True;" />
<add key="quartz.dataSource.default.provider" value="SqlServer-20" />
</quartz>
Run Code Online (Sandbox Code Playgroud)
如果您在Web应用程序或服务或winform应用程序中托管Quartz.net,则需要记住几件事.最好的方法是将SchedulerFactory和Scheduler创建为单例.你可以在这里收集更多的信息.
更新:
首先,您必须创建Quartz.net表(请参阅步骤1),然后您必须为optiomization创建一些索引(请参阅页面底部).
由于您要使用Web应用程序提交作业,但是您没有将该应用程序用于quartz.net事件(触发器),因此您无需启动调度程序.这一步有几个步骤:
您必须将线程池类型更改为ZeroSizeThreadPool
<add key="quartz.threadPool.type"
value="Quartz.Simpl.ZeroSizeThreadPool, Quartz" />
Run Code Online (Sandbox Code Playgroud)
你必须定义你的StdSchedulerFactory和Scheduler单例.您可以在应用程序(asp.net)引导期间启动.
你永远不会启动调度程序(你的Windows服务将使用它).
另一件需要记住的事情是,您需要在Web和Windows服务之间共享工作,因此最好将其保存在单独的程序集中.
你提到你在一张桌子里存放了一些信息.您仍然需要提交您的作业和触发器,这些作业将保留在Quartz.net表中.
| 归档时间: |
|
| 查看次数: |
10475 次 |
| 最近记录: |