如何将自定义 IJobStore 设置为 Quartz (.Net Core)

How set custom IJobStore to 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"

我的 class 的“testAsync”命名空间 和“LocalJobStore”class 名称

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

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

它无一例外地工作,但后来我将“testAsync.LocalJobStore”放入 schedeller 工厂我有这个例外 -

您需要像这样设置 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