首页 > 解决方案 > 如何将自定义 IJobStore 设置为 Quartz (.Net Core)

问题描述

您好我有一个小问题,我在我的 .Net Core 应用程序中使用 Quartz,我需要将“作业”信息保存到本地文件(不能使用 RAM 或数据库)。当我找不到像 LocalFileJobStore 这样的默认实现时,我创建了它,但现在我不知道如何将它插入到 qurtz 中。我很高兴收到您的答复

我如何尝试这样做:

private static async Task Main(string[] args)
{
  {
    var props = new NameValueCollection
    {
      {"quartz.jobStore.type", "testAsync.LocalJobStore"}
    };

    var factory = new StdSchedulerFactory(props);
    var scheduler = await factory.GetScheduler();

    await scheduler.Start();
 }
}

在哪里

“testAsync.LocalJobStore”

我的类的“testAsync”命名空间和“LocalJobStore”类名

如果我尝试获取这样的类型(就像在 Quartz 中所做的一样)

var type1 = Type.GetType("testAsync.LocalJobStore", true);

它没有例外地工作,但是我将“testAsync.LocalJobStore”放入调度程序工厂我有这个例外 -

введите сюда описание изображения

标签: c#.netquartz.net

解决方案


您需要像这样设置 NameValueCollection:

private static async Task Main(string[] args)
{
  {
    var props = new NameValueCollection
    {
      {"quartz.jobStore.type", "<<full class name>>, <<assembly name>>"}
    };

    var factory = new StdSchedulerFactory(props);
    var scheduler = await factory.GetScheduler();

    await scheduler.Start();
 }
}

之后你也可以有关于序列化的例外,所以添加

{"quartz.serializer.type", "binary"}

到 NameValueCollection


推荐阅读