开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务
2019-05-29 10:13
2131 查看
项目介绍:
Hangfire:是一个开源的job调度系统,支持分布式JOB!!
Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响!
该组件已被Hangfire官方采纳,在Hangfire官网可以查到:
开源地址:
https://github.com/yuzd/Hangfire.HttpJob
该项目目的是:
剥离Job调度和业务
共有三篇文章
开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务
开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务
开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
本篇教程:如何创建一个周期性的HttpJob任务的
周期性的HttpJob任务的定义
- 是多次运行的job 采用Cron表达式进行定义运行规则
注意事项
- 最新版的hangfire已支持 6位数的Cron表达式(支持到秒级)
- 但是我在hangfire的dashbord扩展的Cron生成页面还不支持到秒级别(大家可以在google找可以生成6位的网站工具)
1. 进入hangfire的后台 点击 上侧栏【周期性作业】
如下图所示:
针对周期性作业 可以看到有三个按钮
按钮名称 | 说明 |
---|---|
新增周期性作业 | 新增一个周期性httpjob作业 |
编辑周期性作业 | 如果你重新编辑该周期性httpjob作业内容可以点击该按钮 |
Cron表达式生成 | 跳转到Cron表达式生成页面 |
1. 生成Cron表达式
点击【Cron表达式生成】 进入Cron表达式生成页面 如下图:
例如 我想要 每天晚上8点05分执行
得出结果:【5 20 * * *】
2.新增周期性作业
点击【新增周期性作业】按钮 会出现一个json编辑器
json编辑器的参数说明如下
字段名称 | 备注 |
---|---|
JobName | 你给这个httpjob起的名称【必填项】 |
Method | 这个httpjob的请求方式 "get" 或者 "post" 【必填项】 |
ContentType | 这个httpjob的请求ContentType 默认"application/json" 【必填项】 |
Url | 这个httpjob的请求url 【必填项】 |
Cron | Cron表达式 【必填项】可以先用【Cron表达式生成】功能生成好 |
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 |
举例
比如 每天晚上8点执行一次查询订单已完成超xx小时了(xx作为参数) 但是还没有点评的 发短信让催点评 接口地址:http://localhost:5000/scoreOrder 访问方式是POST 接口有basicAuth验证 用户名是admin 密码是test # 那么对应如下填写: { "JobName": "scoreOrder", //Job名称 "Method": "POST", //http请求的方法 "ContentType": "application/json", //http参数类型 "Url": "http://localhost:5000/scoreOrder",//接口的地址 "Cron": "5 20 * * *", //每天晚上8点05分执行 "Data": { "Hour":48 //传的参数超过48小时 }, "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列表可以查
我刚才设置的是20:05分执行
目前时间是19:50
正好是还有15分钟就要执行了 说明Cron表达式没有问题
对于周期性job 有3个按钮可以操作
按钮名称 | 说明 |
---|---|
立即执行 | 如果你希望不要等到8点05想立即就执行可以点击它 |
停止或开始任务 | 如果你希望暂停这个周期性job 可以点它,点完之后再次点击就是开启 |
编辑周期任务 | 如果你刚刚添加的参数有错误,可以点击这个按钮重新编辑提交 |
停止或开始任务
如果一个周期性job是暂停的 会以红色字体展示
编辑周期任务
点击提交修改
周期性job执行
周期性job执行完毕 在完成列表可以查询
点击job编号进入job详情页查看具体执行情况和日志
也可以在Tag页面进行查看
说明:Tag页面是按jobName进行分组查询的
点击某一个jobName 进入该jobName下所有的运行完成的job列表
相关文章推荐
- 开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
- 【niubi-job——一个开源的分布式任务调度框架】-----安装教程
- 【niubi-job——一个分布式的任务调度框架】----如何开发一个niubi-job的定时任务
- 新一代分布式任务调度框架:当当elastic-job开源项目的10项特性
- 安卓(Android)中如何优雅的 创建/执行 异步任务/回调(AsyncTask 、Thread、Job、CallBack、Handler) ?线程池(Executor)
- 【niubi-job——一个开源的分布式任务调度框架】-----安装教程
- 【niubi-job——一个分布式的任务调度框架】----如何开发一个niubi-job的定时任务
- yarn对mapreducev1的重构,根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。
- 如何使用 Visual C# .NET 创建 ASP.NET HTTP 模块
- 【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!
- 如何在HTML页面中创建兼容不同浏览器的XMLHttpRequest对象
- Quartz中扩展MethodInvokingJobDetailFactoryBean实现对任务调度的拦截
- SQL Server 2008如何创建定期自动备份任务
- OFBiz实现任务调度和JOB运行机制
- Uncode-Schedule首页、文档和下载 - 分布式任务调度组件 - 开源中国社区
- 任务调度开源框架Quartz
- web 项目 任务调度 Spring整合Quartz(JobDetailBean方式)
- 任务调度开源框架Quartz动态添加、修改和删除定时任务
- SQL Server 2008如何创建定期自动备份任务
- 业务是否有必要与数据存储分离,事务如何处理