Issue about Jobs and Triggers storing on database

51 views
Skip to first unread message

Recep Güneş

unread,
Aug 25, 2023, 10:36:08 AM8/25/23
to Quartz.NET
I'm trying to save my triggers and jobs on Database. I think, i set everything okay but I doesn't save data on database.
Here is my quartz service registration
service.AddQuartz(opt =>
{
opt.UsePersistentStore(p =>
{
p.UseMySql(configuration.GetConnectionString("defaultForQuartz")!);
p.UseClustering();
p.UseProperties = true;
p.UseNewtonsoftJsonSerializer();
});
});
service.AddQuartzHostedService(opt =>
{
opt.WaitForJobsToComplete = true;
});

service.AddScoped<IScheduler>(_ => new StdSchedulerFactory().GetScheduler().Result);

service.AddTransient<ExpireUrlJob>();


Here is consumer's consume method which schedules jobs:
public async Task Consume(ConsumeContext<ExpiredUrlDto> context)
{
var message = context.Message;

var job = JobBuilder.Create<ExpireUrlJob>()
.UsingJobData("url", message.LongUrl)
.Build();
logger.LogInformation($"{nameof(ExpireUrlJob)} created for {message.LongUrl}");
var offset = new DateTimeOffset(message.ExpireDateTime.ToUniversalTime());
logger.LogInformation($"offset is {offset} for trigger");

var trigger = TriggerBuilder.Create()
.ForJob(job)
.StartAt(offset)
.Build();
logger.LogInformation($"trigger created for {message.LongUrl}");

await scheduler.ScheduleJob(job, trigger);
logger.LogInformation("trigger and job was scheduled");

await scheduler.Start();
logger.LogInformation("scheduler started");
}

Also my job execute method is:

public Task Execute(IJobExecutionContext context)
{
var dataMap = context.JobDetail.JobDataMap;
var url = dataMap.GetString("url");
var entity = appDbContext.Urls.FirstOrDefault(p => p.LongUrl == url);
if (entity == null)
{
return Task.CompletedTask;
}
entity.ShortPath = null;
entity.ExpireDate = null;
appDbContext.SaveChanges();
return Task.CompletedTask;
}


Also i have following packages in my project
  • MassTransit
  • MassTransit.RabbitMQ
  • Microsoft.Extensions.Configuration.Abstractions
  • Microsoft.Extensions.Configuration.Binder
  • MySql.Data
  • Newtonsoft.Json
  • Npgsql.EntityFrameworkCore.PostgreSQL
  • Quartz
  • Quartz.AspNetCore
  • Quartz.Extensions.DependencyInjection
  • Quartz.Extensions.Hosting
  • Quartz.Serialization.Json
Reply all
Reply to author
Forward
0 new messages