项目介绍:
Hangfire:是一个开源的job调度系统,支持分布式JOB!!html
Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire自己是独立的。能够独立更新Hangfire版本不影响!git
该组件已被Hangfire官方采纳,在Hangfire官网能够查到:github
开源地址:json
https://github.com/yuzd/Hangfire.HttpJob服务器
该项目目的是:
剥离Job调度和业务app
共有三篇文章
开源分布式Job系统,调度与业务分离-如何建立一个计划httpjob任务
开源分布式Job系统,调度与业务分离-如何建立周期性的HttpJob任务
开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
本篇教程:如何建立一个计划httpjob任务
计划httpjob任务的定义
一次性的job 只运行一次编辑器
1. 进入hangfire的后台 点击 左侧栏【计划】
会看到一个按钮名称叫 【新增常规做业】以下图所示: 分布式
2. 点击【新增常规做业】会出现一个json编辑器
以下图所示 post
json编辑器的参数说明以下
字段名称 | 备注 |
---|---|
JobName | 你给这个httpjob起的名称【必填项】 |
Method | 这个httpjob的请求方式 "get" 或者 "post" 【必填项】 |
ContentType | 这个httpjob的请求ContentType 默认"application/json" 【必填项】 |
Url | 这个httpjob的请求url 【必填项】 |
DelayFromMinutes | 须要延迟执行的分钟,注意:0 表明马上执行; -1表明只能手动触发; >=1表明延迟分钟数 【必填项】 |
Data | 这个httpjob在Method=“post”的时候能够指定post的内容,能够是一个对象也能够是一个string或者其余类型 |
Timeout | 这个httpjob请求的超时时间(单位是毫秒 例如5000 表明是5秒) |
BasicUserName | 这个httpjob请求须要启用basic认证时设置的username |
BasicPassword | 这个httpjob请求须要启用basic认证时设置的密码 |
EnableRetry | 失败的时候(好比超时 远程服务器请求错误等)是否启用重试 默认false ,若是设置true 会重试最大3次 |
SendSucMail | 这个httpjob请求无异常的时候是否发送通知邮件 默认false |
SendFaiMail | 这个httpjob请求异常的时候是否发送通知邮件 默认true |
设置通知邮件地址 若是有多个用半角逗号隔开 | |
AgentClass | 若是是AgentJob开发的httpjob 则须要填写,填写的是完整的类型格式{namespace},{程序集的名称} 例如:TestHangfireAgent.Jobs,TestHangfireAgent |
3.举例
我开发了一个订单支付超时检测 接口 访问地址是: http://localhost:5000/checkOrder 访问方式是POST 访问的参数是 orderId 接口有basicAuth验证 用户名是admin 密码是test 但愿计划 15分钟后执行 看有没有支付 没有支付 就把订单状态改为取消 若是接口访问失败那么通知邮箱 1877682825@qq.com # 那么对应以下填写: { "JobName": "checkOrder", //Job名称 "Method": "POST", //http请求的方法 "ContentType": "application/json", //http参数类型 "Url": "http://localhost:5000/checkOrder",//接口的地址 "DelayFromMinutes": 15, //15分钟后执行 "Data": { "OrderId":123456 //传的参数 orderId }, "Timeout": 5000, //http调用超时设置 "BasicUserName": "admin", //http调用的basicAuth "BasicPassword": "test", //http调用的basicAuth "EnableRetry": false, "SendSucMail": false, "SendFaiMail": true, //http失败时发邮件通知 "Mail": "1877682825@qq.com", //http调用失败通知我 "AgentClass": "" }
点击【提交】添加job 成功以下图所示:
能够看到会在15分钟后执行该job
针对该job 能够看到有四个按钮url
按钮名称 | 说明 |
---|---|
加入队列 | 若是你想让这个job当即执行 能够点击该按钮 |
删除选中 | 若是你想删除这个job 能够点击该按钮 |
带参数执行 | 这个按钮的做用是 从新定义JSON里面的Data的值 并当即执行的意思,在AgentJob场景下使用较多 |
中止Job | 这个只能在AgentJob才可使用 |
job到时执行 以下图所示
job执行完毕 在完成列表能够查询
点击job编号进入job详情页查看具体执行状况和日志
也能够在Tag页面进行查看
说明:Tag页面是按jobName进行分组查询的
点击某一个jobName 进入该jobName下全部的运行完成的job列表