c# - Quartz .net 作业未执行

标签 c# quartz-scheduler quartz.net

我创建了一个 ASP.NET MVC 网站。然后我创建了一个名为 Site.Scheduler 的类库,我想在其中放置所有触发器和作业。

我已经为测试目的创建了一个简单的作业

public class CurrencyRatesJob : IJob
{
    private readonly IBudgetsRepository budgetsRepository;

    public CurrencyRatesJob(IBudgetsRepository budgetsRepository)
    {
        this.budgetsRepository = budgetsRepository;
    }

    public void Execute(IJobExecutionContext context)
    {
        try
        {
            var budgets = new BudgetsDTO();
            var user = new UserDTO();

            budgets.Sum = 1;
            budgets.Name = "Quartz";
            user.Email = "email@g.com";

            budgetsRepository.InsertBudget(budgets, user);
        }
        catch (Exception ex)
        {
            throw new Quartz.JobExecutionException(ex);
        }
    }
}

和一个作业调度器

public class CurrencyRatesJobScheduler
{
    public static void GetCurrencyRates()
    {
        try
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

            IJobDetail job = JobBuilder.Create<CurrencyRatesJob>().Build();

            ITrigger trigger = TriggerBuilder.Create()
                .StartNow()
                .WithSimpleSchedule
                    (s =>
                        s.WithIntervalInSeconds(10)
                        .RepeatForever()
                    )
                .Build();

            scheduler.ScheduleJob(job, trigger);
        }
        catch (Exception ex)
        {
            ex.ToString();
        }
    }
}

为了在应用程序启动时启动调度程序,我在 Global.asax.cs 中添加了以下内容

CurrencyRatesJobScheduler.GetCurrencyRates();

所以毕竟,我希望作业每 10 秒执行一次并将所有信息插入数据库,但它什么也没做,我也没有收到任何错误。

有谁知道可能是什么问题?

编辑:

所以我已经创建了所有必要的表(从 Quartz.NET 执行脚本)并且我在我的类库中添加了一个新的 App.config 文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="quartz.scheduler.instanceName" value="MyQuartzScheduler" />
    <add key="quartz.scheduler.instanceId" value="instance_one" />
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <add key="quartz.threadPool.threadCount" value="10" />
    <add key="quartz.threadPool.threadPriority" value="1" />
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
    <add key="quartz.jobStore.misfireThreshold" value="60000" />
    <add key="quartz.jobStore.dataSource" value="default" />
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
    <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
    <add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
    <add key="quartz.dataSource.default.connectionString" value="Server=(local);Database=My.Database;UID=User;PWD=Password" />
    <add key="quartz.dataSource.default.provider" value="SqlServer-20" />
    <add key="quartz.jobStore.useProperties" value="true" />
  </appSettings>
</configuration>

仍然没有运气。除此之外,没有触发器或作业存储在数据库中。

最佳答案

你需要打电话

  scheduler.Start();

关于c# - Quartz .net 作业未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002959/

相关文章:

c# - 如何在托管 IronPython 2.0 时发布模块 "__main__"?

java - 如何从另一个模块访问 Spring Boot Quartz Bean?

c# - Quartz.NET 配置 - 不与数据库交互

c# - 在 Quartz.net 中,如何在使用单个 IJob 时防止作业同时运行?

c# - FileShare.None 是否使线程等待文件流关闭?

c# - 是否支持非泛型类中的泛型构造函数?

c# - 如何在 asp.net 代码中实现 FIPS(此实现不是 Windows 平台 FIPS 验证加密算法的一部分。)

spring-boot - Quartz 组件未在 Spring Boot 应用程序上调用驼峰处理器

java - 在多台机器上运行 tomcat 时的 Quartz 集群设置

Spring.Net Quartz调度和代码配置