Hangfire:是一个开源的job调度系统,支持分布式JOB!!
Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响!
该组件已被Hangfire官方采纳,在Hangfire官网可以查到:
开源地址:
https://github.com/yuzd/Hangfire.HttpJob
剥离Job调度和业务
传统使用Hangfire都是把JOb的处理逻辑代码写在和Hangfire的同一个工程!
<code>缺点: 这样就耦合在了一起,如果业务线增大,会导致每个业务线的Job处理逻辑都得和Hangfire耦合在一起!发布的时候所有业务线Job都得暂停调度</code>
而使用了Hangfire.HttpJob的话 就是把Hangfire的服务拓展成可以把Job的处理逻辑代码写在别的工程里面(以webapi的形式暴露给Hangfire去调度)
<code>优点:这样就解耦了Hangfire和业务处理逻辑,业务job开发者可以忽略Hangfire的存在!不同的业务线分开不同的JobAgent可以分别部署,发布互不影响</code>
是对Hangfire的一个扩展插件,利用Hangfire.HttpJob可以快速搭建分部署Job调度Server。
特点是:
业务与调度完全分离。
支持定点执行 延迟执行 周期性循环执行,支持秒级别
配合JobAgent组件可以实现Job管理 监控 日志等
一次性的job 只运行一次
会看到一个按钮名称叫 【新增常规作业】如下图所示:
如下图所示
字段名称
备注
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
针对该job 可以看到有四个按钮
按钮名称
说明
加入队列
如果你想让这个job立即执行 可以点击该按钮
删除选中
如果你想删除这个job 可以点击该按钮
带参数执行
这个按钮的作用是 重新定义JSON里面的Data的值 并立即执行的意思,在AgentJob场景下使用较多
停止Job
这个只能在AgentJob才可以使用
说明:Tag页面是按jobName进行分组查询的
点击某一个jobName 进入该jobName下所有的运行完成的job列表
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。