Как внедрить в Quartz кастомную реализацию IJobStore (.Net Core)

Всем привет, столкнулся с небольшой проблемой, я использую Quartz в .Net Core приложении и мне необходимо иметь персистентное хранилище для Quartz причем оно должно хранить информацию в локальном файле (соответственно стандартные реализации IJobStorage - RAM или database мне не подходят).Как выход я сделал свою реализацию IJobStorage которая делает всё что мне нужно, но теперь я не могу встроить её в инфраструктуру Quartz чтобы она использовалась. Если у кого-то есть идеи или опыт добавления кастомных элементов в кварц поделитесь)

Как я пытаюсь это сделать:

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);

то всё ок, ошибок нет, но когда передаю этот тип в скедуллер фабрику получаю - введите сюда описание изображения


Ответы (1 шт):

Автор решения: Duskone39

Внедрить собственный класс в структуру Quartz можно следующим образом -

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();
 }
}

После этого может возникнуть ошибка связанная с сериализацией, в таком случае добавьте в ту же NameValueCollection вот это -

{"quartz.serializer.type", "binary"}
→ Ссылка