Как внедрить в 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 шт):
Внедрить собственный класс в структуру 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"}