使用c#在Web API中使用Scheduler
本文关键字:Scheduler API Web 使用 | 更新日期: 2023-09-27 18:18:14
我想使用调度器实现以下情况:
假设我的数据库中有10个用户,对于所有这些用户,我都有一个新表,UserId作为外键。假设UserId,Column1,Column2,CurrentYear是表的列。现在,由于年份在12月31日(24:00:00)发生变化,我需要在上面的表中再次添加所有现有用户,CurrentYear=newYear, Column1和Column2每年都为零值。这样我就可以在新的一年里为每个用户考虑所有的刷新值。较旧的值将仅用于记录维护。我是新来的。我怎样才能做到这一点呢?
您的问题的一个可能的解决方案是使用事件直接与您的数据库。
创建一个从下一年的第一天开始并每年重复出现的事件。当它被触发时,它从表中读取所有记录,并用更新后的值将它们插入回去。假设您的表名为"users"
,它看起来像这样:
CREATE EVENT update_users
ON SCHEDULE EVERY 1 YEAR
STARTS '2017-01-01 00:00:00'
DO
INSERT INTO users (UserId, CurrentYear)
SELECT UserId, YEAR(CURDATE())
FROM users
WHERE CurrentYear = YEAR(CURDATE()) - 1
您需要连续运行作业来实现。我假设你正在寻找一个自动化的解决方案,该表每年在一个特定的日期时间更新。
有几个可用的作业调度器。有一个使用调度器的windows服务。你可以看看Quartz网站。NET提供了丰富的api集来满足您的需求。下面是在12月31日有一个触发器的示例:
// Define your job
IJobDetail yearlyJob = JobBuilder.Create<YourJobClass>()
.WithIdentity("yearly", "group1")
.Build();
// Trigger the job to run 31st Dec 11.59.59 every 12 months
ITrigger trigger_tcs = TriggerBuilder.Create()
.WithIdentity("Run Infinitely every 2nd day of the month", "Monthly_Day_2")
.StartNow()
.WithSchedule(CronScheduleBuilder.CronSchedule("59 59 23 31 12 ? * "))
.Build();