“巨人们”的地址
Hangfire Mysql:
https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的sql语句有bug
 
Hangfire Console:
 
站在巨人们的肩膀开始我的整合啦:
主要用在以下场景:
比如:
1客人下单,超过最晚支付时间就自动取消订单
2复杂的需要花一定时间的计算,然后还得发推送通知
3 通过延迟和循环任务分批群发短信或邮件
等等
示意图为
 
首先我封装了hangfire在server端加入api功能,封装了以下:
1可以创建一个立刻执行的后台job
2可以创建一个可延期执行的job
3可以创建一个定时周期性的job
4可以创建一个类似于Task的Continue功能的有执行顺序的Job。例如A执行完了执行B,B执行完了执行C。。。
 
封装了这层API这样就统一了 job的入口。
并且规定好了job的参数,
因为具体job的执行是不在 hangfireserver里面的。
hangfireserver是统一管理job和发起执行job的请求角色。
那么hangfireserver是怎么知道往哪里发http请求去执行job,带什么参数的呢
都是在创建job的时候就约定好了。
例如 客人下单 时 调用 创建一个可延迟执行的job 例如延迟15分钟
调用创建的时候 传入的对象有发起http请求的一些参数例如
URL:执行具体job的api地址 也就是如上图的web api excute
Method 是get还是 post
contenttype啊之类的。
因为虽然是内网 但是我也不想直接暴露给所有人 所以我额外规定了web api excute都要统一加了 basic认证。。
创建成功后
这个时候就可以在dashbord上看见计划有一个任务
过了15分钟后开始执行这个job,就发起请求,
下面的蓝色部分就是 hangfire console的作用。
把执行的参数 结果等都保存下来。。查看的时候一目了然
 
目前还存在一些不方便的地方:
dashbord不支持查询功能。。
我就改了一下源码
 
新增了对于Netcore的支持 :
https://github.com/yuzd/Hangfire.HttpJob
 
效果如下
 
2016-12-25平安夜新增了dashbord新增作业和周期性作业的入口
 
2015-12-26新增了corn表达式在线生成的功能
至此 我想要的功能基本满足了 yeah!
 
有兴趣的同学可以看下 我最新开源的Hangfire.HttpJob项目 : https://github.com/yuzd/Hangfire.HttpJob/wiki

Hangfire.HttpJob究竟是干嘛的

  • 传统使用Hangfire都是把JOb的处理逻辑代码写在和Hangfire的同一个工程!
  • 缺点: 这样就耦合在了一起,如果业务线增大,会导致每个业务线的Job处理逻辑都得和Hangfire耦合在一起!发布的时候所有业务线Job都得暂停调度
  • 而使用了Hangfire.HttpJob的话 就是把Hangfire的服务拓展成可以把Job的处理逻辑代码写在别的工程里面(以webapi的形式暴露给Hangfire去调度)
  • 优点:这样就解耦了Hangfire和业务处理逻辑,业务job开发者可以忽略Hangfire的存在!不同的业务线分开不同的JobAgent可以分别部署,发布互不影响

Hangfire.HttpJob

是对Hangfire的一个扩展插件,利用Hangfire.HttpJob可以快速搭建分部署Job调度Server。

特点是:

  1. 业务与调度完全分离。
  2. 支持定点执行 延迟执行 周期性循环执行,支持秒级别
  3. 配合JobAgent组件可以实现Job管理 监控 日志等

Hangfire 使用笔记 任务可以分离到别的项目中,无需重复部署Hangfire,通过API方式通信。的更多相关文章

  1. 在前后端分离的SpringBoot项目中集成Shiro权限框架

    参考[1].在前后端分离的SpringBoot项目中集成Shiro权限框架 参考[2]. Springboot + Vue + shiro 实现前后端分离.权限控制   以及跨域的问题也有涉及

  2. 在.netcore webapi项目中使用后台任务工具Hangfire

    安装Hangfire 在webapi项目中通过nuget安装Hangfire.Core,Hangfire.SqlServer,Hangfire.AspNetCore,截止到目前的最新版本是1.7.6. ...

  3. Redis学习笔记之二 :在Java项目中使用Redis

    成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...

  4. 前端学习笔记系列一:5 在项目中引入阿里图标icon

    进入到阿里的图标库网站,里面有上百万种icon,https://www.iconfont.cn,需要注册一个帐号,然后进入到这个页面,在这里点击右下角的带加号的图标,创建一个新的项目,名称与你要使用图 ...

  5. MVC4 Model View Controller分离成独立项目

    适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...

  6. 前后端分离之前端项目构建(grunt+require+angular)

    前言 前段时间做了一个项目,前端开发页面,然后把代码给到后端同学,后端同学通过vm再来渲染页面.后来才发现,这种方式简直是太low了,因为前端代码在服务端同学那里,每次前端需要更改的时候都需要去到服务 ...

  7. 委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式

    引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到和委托相关的匿名方法.Lambda表达式及泛型委托记录 ...

  8. BI笔记-SSAS部署的几种方式及部署后的SSAS刷新

    SSAS的部署方式在哥本哈士奇的博客:BI笔记之--- SSAS部署的几种方式已经介绍了四种方式,在这里再介绍一种比较常用的快速部署方式. 环境约定:SQL Server 2008 R2 示例库:Ad ...

  9. Ext.Net学习笔记24:在ASP.NET MVC中使用Ext.Net

    在前面的笔记中已经介绍了如何在ASP.NET WebForm中使用Ext.Net,由于这个系列一直在WebForm中使用,所以并没有涉及到ASP.NET MVC中的用法. 如果你要在ASP.NET M ...

  10. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...

随机推荐

  1. ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

    论文直接将纯Trasnformer应用于图像识别,是Trasnformer在图像领域正式挑战CNN的开山之作.这种简单的可扩展结构在与大型数据集的预训练相结合时,效果出奇的好.在许多图像分类数据集上都 ...

  2. 51nod 1268

    51nod 1268 基础dfs 题目如下: 给出 N 个正整数组成的数组 A,求能否从中选出若干个,使他们的和 为 K.如果可以,输出:"Yes",否则输出"No&qu ...

  3. SVM三则

    硬间隔SVM SVM被提出来, 解决模式识别中, 数据的分类问题,属于有监督算法中的一种, 如上图所示, 于其他的线性回归方式不同, SVM企图去寻找一个最完美的超平面, 因为能正确分类样本的线, 它 ...

  4. SpringBoot学习:文件上传和下载

    maven导入依赖 首先创建一个maven项目,然后加入以下配置,就创建好了一个springboot项目 <parent> <groupId>org.springframewo ...

  5. Flask、Tornado、Nginx搭建Https服务

    其实Flask可以直接用tornado部署就行: # coding=utf-8 from tornado.wsgi import WSGIContainer from tornado.httpserv ...

  6. Android、iOS、jenkins全自动化打包

    主要流程思路[粗略讲处理思路,若遇到具体问题可留言交流]: 1.android的打包命令 2.ios的打包命令 3.jenkins的参数化构建 4.七牛的上传命令等 5.处理ipa的下载操作及ipa过 ...

  7. Elasticsearch与kibana的单机安装

    前言 本文为纯实操记录,以供需要时查阅. 对应版本为7.3,jdk版本1.8 Elasticsearch安装 Elasticsearch官网:https://www.elastic.co/cn/pro ...

  8. Web前端 -- ES6

    ES标准中不包含 DOM 和 BOM的定义,只涵盖基本数据类型.关键字.语句.运算符.内建对象.内建函数等通用语法. 本部分只学习前端开发中ES6的最少必要知识,方便后面项目开发中对代码的理解. 1. ...

  9. 2022飞天技术峰会:硬之城如何基于 SAE 打造数智化电子工业互联网平台

    简介: 全球数字化时代已经到来,数字经济正推动生产方式.生活方式和治理方式的深刻变化,成为重组全球要素资源,重塑经济结构,改变全球竞争格局的关键力量. 本文根据硬之城 CEO 李六七先生在峰会上的分享 ...

  10. K8s 网关选型初判:Nginx 还是 Envoy?

    简介: 本文将从性能和成本.可靠性.安全性 3 方面,对两大开源实现进行比对,希望对正在做 K8s 网关选型的企业有所借鉴. 作者:张添翼(澄潭) 为了避免混淆,我们先对一些关键定义做一些厘清: 传统 ...