天天看点

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

Hangfire:是一个开源的job调度系统,支持分布式JOB!!

Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响!

该组件已被Hangfire官方采纳,在Hangfire官网可以查到:

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

开源地址:

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 只运行一次

会看到一个按钮名称叫 【新增常规作业】如下图所示:

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

如下图所示

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

字段名称

备注

JobName

你给这个httpjob起的名称【必填项】

Method

这个httpjob的请求方式 "get" 或者 "post" 【必填项】

ContentType

这个httpjob的请求ContentType 默认"application/json" 【必填项】

Url

这个httpjob的请求url 【必填项】

DelayFromMinutes

需要延迟执行的分钟,注意:0 代表立刻执行; -1代表只能手动触发; &gt;=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

Mail

设置通知邮件地址 如果有多个用半角逗号隔开

AgentClass

如果是AgentJob开发的httpjob 则需要填写,填写的是完整的类型格式{namespace},{程序集的名称} 例如:TestHangfireAgent.Jobs,TestHangfireAgent

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

针对该job 可以看到有四个按钮

按钮名称

说明

加入队列

如果你想让这个job立即执行 可以点击该按钮

删除选中

如果你想删除这个job 可以点击该按钮

带参数执行

这个按钮的作用是 重新定义JSON里面的Data的值 并立即执行的意思,在AgentJob场景下使用较多

停止Job

这个只能在AgentJob才可以使用

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用
开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

说明:Tag页面是按jobName进行分组查询的

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

点击某一个jobName 进入该jobName下所有的运行完成的job列表

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 开源分布式Job系统,调度与业务分离-如何创建一个计划httpjob任务开源分布式Job系统,调度与业务分离-如何创建周期性的HttpJob任务开源分布式Job系统,调度与业务分离-HttpJob.Agent组件介绍以及如何使用

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。

继续阅读