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


    “巨人们”的地址
    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管理 监控 日志等
    转自:http://Www.CnBlogs.Com/WebEnh/
    本博客Android APP 下载
    支持我们就给我们点打赏
    支付宝打赏 支付宝扫一扫二维码
    微信打赏 微信扫一扫二维码

    如果想下次快速找到我,记得点下面的关注哦!
  • 相关阅读:
    小事引发的思考
    C++程序设计教程学习(0)-引子
    Cygwin安装
    PATHEXT环境变量简介
    Oracle Real Application Cluster
    SQLNET.AUTHENTICATION_SERVICES参数说明
    用神经网络拟合数据
    用PyTorch自动求导
    用PyTorch做参数估计
    深度学习基础(概念性)
  • 原文地址:https://www.cnblogs.com/webenh/p/15438169.html
Copyright © 2020-2023  润新知