除了手动添加 job 还可以写代码添加

优质
小牛编辑
134浏览
2023-12-01

Hangfire.HttpJob.Client 组件

Install-Package Hangfire.HttpJob.Client

  • 支持 net framework 4.5+
  • 支持 net standard 2.0+

如何使用Client新增一次性运行的 job

参数是和在dashbord上手动添加一致的,关于参数的说明请参考: job 参数说明

// serverUrl是hangfire dashbord的访问地址

    var serverUrl = "http://localhost:5000/job";
    //下面用的是同步的方式,也可以使用异步: await HangfireJobClient.AddBackgroundJobAsync
    var result = HangfireJobClient.AddBackgroundJob(serverUrl, new BackgroundJob
    {
        JobName = "测试api",
        Method = "Get",
        Url = "http://localhost:5000/testaaa"
        SendSuccess = true,
        DelayFromMinutes = 1 //这里是在多少分钟后执行
       //RunAt = new DateTime(2020,7,25,10,5,1) // 也可以不用指定 DelayFromMinutes 参数 直接指定在什么时候运行。
    }, new HangfireServerPostOption
    {
        BasicUserName = "admin",//这里是hangfire设置的basicauth
        BasicPassword = "test"//这里是hangfire设置的basicauth
    });

    //result.JobId 就是这个一次性job的id 可以通过这个id在它没有运行前删除它

如何使用Client删除刚刚创建的一次性运行的job

    var serverUrl = "http://localhost:5000/job";
    var result = HangfireJobClient.RemoveBackgroundJob(serverUrl, jobId, new HangfireServerPostOption
    {
        BasicUserName = "admin",//这里是hangfire设置的basicauth
        BasicPassword = "test"//这里是hangfire设置的basicauth
    });

BackgroundJob 不支持修改。如果创建后要修改 就得删除后重新创建

如何使用Client新增一个周期性运行的 job

参数是和在dashbord上手动添加一致的,关于参数的说明请参考: 周期性运行的 job 参数说明

    var serverUrl = "http://localhost:5000/job";
    //下面用的是同步的方式,也可以使用异步: await HangfireJobClient.AddRecurringJobAsync
    var result = HangfireJobClient.AddRecurringJob(serverUrl, new RecurringJob()
    {
        JobName = "测试5点40执行",
        Method = "Post",
        Data = new {name = "aaa",age = 10},
        Url = "http://localhost:5000/testpost"
        Cron = "40 17 * * *"
    }, new HangfireServerPostOption
    {
        BasicUserName = "admin",//这里是hangfire设置的basicauth
        BasicPassword = "test"//这里是hangfire设置的basicauth
    });

RecurringJob如果同一个JobName多次调用创建 就等同于修改。删除可以调用 RemoveRecurringJob 进行删除