问题描述
当我使用 xml 插件时,Quartz.Net 没有将作业/触发信息保存到 Oracle 表中。
我已经阅读了其他帖子,并为“quartz.plugin.jobInitializer.fileNames”属性尝试了“quartz_jobs.xml”和“~\quartz_jobs.xml”;
代码执行良好,我没有看到任何异常。我在 QRTZ_LOCKS 和 QRTZ_SCJEDULER_STATE 表中看到数据,但 QRTZ_CRON_TRIGGERS、QRTZ_JOB_DETAILS 表是空的。
不知道为什么它不会保存作业/触发信息。
请帮忙!
代码如下:
private async Task ScheduleJob(IServiceProvider serviceProvider)
{
try
{
var props = GetQuartzSettings();
var factory = new StdSchedulerFactory(props);
var scheduler = await factory.GetScheduler();
scheduler.JobFactory = new FunctionServiceJobFactory(serviceProvider);
await scheduler.Start();
}
catch (Exception ex)
{
_log.LogError(ex,"Exception faced in ScheduleJob()");
}
}
private NameValueCollection GetQuartzSettings() =>
new NameValueCollection
{
["quartz.serializer.type"] = "json",["quartz.scheduler.instanceName"] = "TEST1",["quartz.scheduler.instanceId"] = "AUTO",["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool,Quartz",["quartz.threadPool.threadCount"] = "10",["quartz.threadPool.threadPriority"] = "normal",["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX,["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.OracleDelegate,["quartz.jobStore.useProperties"] = "false",["quartz.jobStore.dataSource"] = "default",["quartz.dataSource.default.provider"] = "OracleODPManaged",["quartz.dataSource.default.connectionString"] = "ConnectionString",["quartz.jobStore.tablePrefix"] = "QRTZ_",["quartz.plugin.jobInitializer.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin,Quartz.Plugins",["quartz.plugin.jobInitializer.failOnFileNotFound"] = "true",["quartz.plugin.jobInitializer.fileNames"] = "~\\quartz_jobs.xml",["quartz.plugin.jobInitializer.ScanInterval"] = "0"
};
这是quartz_jobs.xml的内容:
<?xml version="1.0" encoding="utf-8" ?>
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<schedule>
<job>
<name>DEPTH</name>
<group>TENSECONDS</group>
<description>Data Service</description>
<job-type>DataService.Job.FunctionServiceJob,DataService.Job</job-type>
<job-data-map>
<entry>
<key>Id</key>
<value>DEPTH23</value>
</entry>
</job-data-map>
</job>
<trigger>
<cron>
<name>TENSECONDSTrigger</name>
<group>TENSECONDSTriggerGroup</group>
<job-name>DEPTH</job-name>
<job-group>TENSECONDS</job-group>
<misfire-instruction>Donothing</misfire-instruction>
<cron-expression>0/10 0/1 0 ? * * *</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
我使用的是 .Net Core 3.1 控制台应用程序,Quartz.Net 版本是 3.2.4
我有类似的设置可用于 sql Server,但由于某种原因,我无法将其写入 Oracle。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)