四时宝库

程序员的知识宝库

Hangfire 定时任务的基本用法

用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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接