用Hangfire 用来创建定时任务,实现数据库的定时插入操作
1、创建webapi,并引入Hangfire;包括1、Hangfire.AspNetCor 2、Hangfire.MemoryStorage 程序包。
2、在program 中增加Hangfire 的配置:
builder.Services.AddHangfire(x => x.UseMemoryStorage());
// 添加 Hangfire 服务器,后台处理任务的核心服务
builder.Services.AddHangfireServer();
app.UseHangfireDashboard(); //使用 Hangfire Dashboard,允许在浏览器中查看任务的执行情况
IBackgroundJobClient backgroundJobs=new BackgroundJobClient();
backgroundJobs.Enqueue(() => Console.WriteLine(new emr_clinic_info().insert())); //创建一个只执行一次的任务
RecurringJob.AddOrUpdate("b", () => new emr_clinic_info().insert(), Cron.Minutely);//创建一个每分钟执行一次的任务
3、增加一个类,用来在数据库中定时插入一条数据:
private OracleConnection con;
private void get_con()
{
con = new OracleConnection();
con.ConnectionString = "data source=10.10.10.11:1521/oracle;user id=admin;password=manager";
con.Open();
}
public emr_clinic_info()
{
get_con();
}
[HttpGet]
public void insert()
{
OracleCommand com = new OracleCommand();
com.Connection = con;
com.CommandText = "select max(id)from admin.temp";
object obj = com.ExecuteScalar();
int id = Convert.ToInt32(obj.ToString());
id = id + 1;
com.CommandText = "insert into admin.temp values (:idd)";
OracleParameter op1 = new OracleParameter();
op1.ParameterName = "idd";
op1.Value = id;
com.Parameters.Add(op1);
com.ExecuteNonQuery();
}
4、启动Hangfire 每隔1分钟就会执行一次insert操作:
在浏览器中输入localhost :5032/hangfire,启动HangFire