Quartz.net 与 Oracle JobStore

问题描述

当我使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...