背景

Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作。内置对任务的可视化操作。非常方便。

但令人遗憾的是普遍都是业务代码和hagnfire服务本身聚合在一个程序中运行,极大的限制了hangfire的扩展和跨语言调用。

所以萌生了开发一个支持restful api调用的sdk库

本来打算简单的建立webapi,内部再调用hangfire,但是一想实在不优雅,组件就应该尽量聚合在一个库的中,偶然找到了一个已经开发了支持restfull api的hangfire组件,github地址=>Hangfire.Jobgithub链接

看了下源码,调用了hangfire公开的接口获取请求路由信息,然后去hangfire去执行。只提供了单次执行和循环执行,其他场景可以参考代码扩展。

但是调用方要通过http请求,不是很方便,所以扩展了一个Chaunce.Hangfire.Clientgithubl链接  的C# sdk来调用hangfire。此库也已上传nuget

使用方式

01第一步:

部署hangfire服务

  拉取Chaunce.Hangfire.Server(属于.netcore程序,支持跨平台部署)项目

  然后修改appsettings.json文件

"ConnectionStrings": {    "HangfireConnection": "server=.;database={你想让hangfire生成的数据库名称};uid=sa;pwd=111111"  },

之后在数据库建立与ppsettings.json中数据库名称一致的数据库。

02第二步:

使用hangfire客户端

建立asp.netcore 程序,并修改appsettings.json文件如下:

 "HangfireClientOptions": {   "RecurringJobUrl": "hangfire/httpjob?op=recurringjob", "BackgroundJobUrl": "", "BaseUrl": "http://localhost:5000", "UserName": "admin",    "PassWord":"test"   }
修改Startup文件将Chaunce.Hangfire.Client注册到asp.netcore组件中
public void ConfigureServices(IServiceCollection services)    {            var option = Configuration.GetSection(nameof(HangfireClientOptions)).Get<HangfireClientOptions>();  services.AddHangfireClient(option); }

这里以Controller中使用为例:将IHangfireClient 注入构造函数进行使用

[Route("api/[controller]")]  [ApiController]    public class ValuesController : ControllerBase   {        private readonly IHangfireClient _hangfireClient;        public ValuesController(IHangfireClient hangfireClient)   {   _hangfireClient = hangfireClient;  }        // GET api/values        [HttpGet]        public async Task<ActionResult<IEnumerable<string>>> Get() {            var result = await _hangfireClient.SendTimerJobAsync(new HttpJobItem  {   Corn = Cron.MinuteInterval(10),    Url = "https://www.cnblogs.com/xiaoliangge/",    JobName = "I'm external Job by restful Api",    }, TaskType.Recurringjob);            return new string[] { "Do i succeeded?", $"{result}" };   }   }

03效果图


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

跨语言调用Hangfire定时作业服务相关推荐

  1. 使用thrift进行跨语言调用(php c# java)

    1:前言 实际上本文说的是跨进程的异构语言调用,举个简单的例子就是利用PHP写的代码去调C#或是java写的服务端.其实除了本文提供的办法还有其他办法,例如http+xml(json)等等都能做到. ...

  2. Java如何跨语言调用Python/R训练的模型

    在 如何使用sklearn进行在线实时预测(构建真实世界中可用的模型) 这篇文章中,我们使用 sklearn + flask 构建了一个实时预测的模型应用.无论是 sklearn 还是 flask,都 ...

  3. Dubbo 跨语言调用神兽:dubbo-go-pixiu

    简介:Pixiu 是基于 Dubbogo 的云原生.高性能.可扩展的微服务 API 网关.作为一款网关产品,Pixiu 帮助用户轻松创建.发布.维护.监控和保护任意规模的 API ,接受和处理成千上万 ...

  4. EasyPlayerPro(Windows)流媒体播放器开发之跨语言调用

    下面我们来讲解一下关于EasyPlayerPro接口的调用,主要分为C++和C#两种语言,C++也可以基于VC和QT进行开发,C++以VC MFC框架为例进行讲解,C#以Winform框架为例进行讲解 ...

  5. jsb调用java_cocos2dx-jsb 跨语言调用及第三方集成 - 过程记录

    1:C++中调用js方法: 问题:ios中当用户通过home键将游戏转入后台时,调用js中的暂停游戏方法: AppDelegate::applicationDidEnterBackground() 和 ...

  6. 跨语言rpc框架Thrift

    RPC 全称 Remote Procedure Call--远程过程调用.RPC技术简单说就是为了解决远程调用服务 的一种技术,使得调用者像调用本地服务一样方便透明 Thrift的定义   Thrif ...

  7. server如何调用 thrift_一文带你了解 Thrift,一个可伸缩的跨语言 RPC 框架(pinpoint 源码分析系列)...

    Thrift 是什么研究分布式调用链工具pinpoint的时候,在源码里看到了Thrift相关的代码,所以来了兴趣,想研究研究这个框架.Thrift 目前是 Apache 的一个项目,但是它是由fac ...

  8. 什么是 Thrift(RPC)?一种接口描述语言和二进制通讯协议,用来定义和创建跨语言的服务

    Table of Contents 什么是Thrift 架构 什么是RPC框架? Thrift的协议栈结构 优点 创建一个Thrift服务 Thrift的第一个java小实例 Thrift是一种接口描 ...

  9. Apache Thrift - 可伸缩的跨语言服务开发框架

    简介: Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部 ...

最新文章

  1. LeetCode:跳跃游戏【55】
  2. Python基础知识细节点总结,零基础一分钟也能掌握
  3. javascript数组中数字和非数字下标的区别
  4. 一张图看懂阿里云网络产品【四】NAT网关
  5. 大工18秋计算机文化基础在线测试2,大工18秋《计算机文化基础》在线测试2【答案】...
  6. 转 node.js和 android中java加密解密一致性问题;
  7. Python数据结构,线性结构:栈、队列、双端队列、列表
  8. 推荐20个值得收藏的前端开源项目
  9. MFC去掉窗口右上方最大化最小化关闭按钮
  10. 2021-06-17
  11. Vue的生命周期是什么
  12. Windows10开机之后进BIOS
  13. python怎么群发邮件_python群发邮件怎么做
  14. 批量html转word 或者 pdf
  15. 微服务中自定义gateway网关过滤器
  16. 替代RTD2171U|CS5266设计电路|TYPEC转HDMI方案|CS5266AN
  17. 懒人畅听网,有声小说类目数据采集,多线程速采案例,Python爬虫120例之23例
  18. Q4营收首超10亿美元大关,推特如愿一雪前耻?
  19. 2017腾讯暑期实习-产品经理二面(霸面)
  20. C++实现简单的3D渲染【线性代数】

热门文章

  1. kali linux超级用户_如何优雅的在Linux上使用Powershell]
  2. 如何更改从Outlook发送的电子邮件中的“答复”地址
  3. 马云:未来无工可打,人工智能发展红利还在10年以后
  4. CML更新 | 新增百度小程序、支付宝小程序
  5. AppleScript: Handler
  6. Spring 入门学习二之IOC
  7. Rabbitmq~对Vhost的配置
  8. 黄聪:wordpress如何开启文章格式post format
  9. HDU 2996 In case of failure [KD树]
  10. .NetCore中IdentityServer使用nginx-proxy的一次排错经历