日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

跨语言调用Hangfire定时作业服务

發(fā)布時(shí)間:2023/12/4 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨语言调用Hangfire定时作业服务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


背景


Hangfire允許您以非常簡(jiǎn)單但可靠的方式執(zhí)行后臺(tái)定時(shí)任務(wù)的工作。內(nèi)置對(duì)任務(wù)的可視化操作。非常方便。

但令人遺憾的是普遍都是業(yè)務(wù)代碼和hagnfire服務(wù)本身聚合在一個(gè)程序中運(yùn)行,極大的限制了hangfire的擴(kuò)展和跨語(yǔ)言調(diào)用。

所以萌生了開(kāi)發(fā)一個(gè)支持restful api調(diào)用的sdk庫(kù)

本來(lái)打算簡(jiǎn)單的建立webapi,內(nèi)部再調(diào)用hangfire,但是一想實(shí)在不優(yōu)雅,組件就應(yīng)該盡量聚合在一個(gè)庫(kù)的中,偶然找到了一個(gè)已經(jīng)開(kāi)發(fā)了支持restfull api的hangfire組件,github地址=>Hangfire.Jobgithub鏈接

看了下源碼,調(diào)用了hangfire公開(kāi)的接口獲取請(qǐng)求路由信息,然后去hangfire去執(zhí)行。只提供了單次執(zhí)行和循環(huán)執(zhí)行,其他場(chǎng)景可以參考代碼擴(kuò)展。

但是調(diào)用方要通過(guò)http請(qǐng)求,不是很方便,所以擴(kuò)展了一個(gè)Chaunce.Hangfire.Clientgithubl鏈接??的C# sdk來(lái)調(diào)用hangfire。此庫(kù)也已上傳nuget

使用方式


01第一步:

部署hangfire服務(wù)

  拉取Chaunce.Hangfire.Server(屬于.netcore程序,支持跨平臺(tái)部署)項(xiàng)目

  然后修改appsettings.json文件

"ConnectionStrings": {
? ?"HangfireConnection": "server=.;database={你想讓hangfire生成的數(shù)據(jù)庫(kù)名稱(chēng)};uid=sa;pwd=111111"
?},

之后在數(shù)據(jù)庫(kù)建立與ppsettings.json中數(shù)據(jù)庫(kù)名稱(chēng)一致的數(shù)據(jù)庫(kù)。


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注冊(cè)到asp.netcore組件中public void ConfigureServices(IServiceCollection services) { var option = Configuration.GetSection(nameof(HangfireClientOptions)).Get<HangfireClientOptions>(); services.AddHangfireClient(option); }

這里以Controller中使用為例:將IHangfireClient 注入構(gòu)造函數(shù)進(jìn)行使用

[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社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總?http://www.csharpkit.com?



總結(jié)

以上是生活随笔為你收集整理的跨语言调用Hangfire定时作业服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。