xxl-job dotnet core executor执行器开源
DotXxlJob
[(github)https://github.com/xuanye/DotXxlJob][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 執行器實現,支持XXL-JOB 2.0+
1 XXL-JOB概述
[XXL-JOB][1]是一個輕量級分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線,開箱即用。以下是它的架構圖
2. 關于DotXxlJob產生
在工作中調研過多個任務調度平臺,如Hangfire、基于Quatz.NET的第三方擴展,都與實際的需求有一點差距。之前一直使用Hangfire,Hangfire的執行器在同步調用業務服務時,如果即時業務服務正在重新部署或者重啟,有一定概率會出現死鎖,導致CPU100%,后來全部調整為異步,但是這樣就無法獲得執行結果,這樣的設計有蠻大問題,XxlJob的回調機制很好的解決了這個問題。本身如果通過http的方式調用,只要部署springbootd的一個執行器就可以解決問題,但是擴展性較差。所以萌生了實現DotNet版本的執行器的想法,為避免重復造輪子,開始之前也進行過調研,以下倉庫[https://github.com/yuniansheng/xxl-job-dotnet][2]給了較大的啟發,但是該庫只支持1.9版本的xxljob,還有一些其他小問題,所以還是自力更生。
3. 如何使用
目前只實現了BEAN的方式,即直接實現IJobHandler調用的方式,Glue源碼的方式實際上實現起來也并不復雜(有需求再說把),或者各位有需求Fork 實現一下
可參考sample
安裝:
dotnet add package DotXxlJob.Core
3.1 在AspNetCore中使用
聲明一個AspNet的Middleware中間件,并擴展ApplicationBuilder,本質是攔截Post請求,解析Body中的流信息
擴展ApplicationBuilderExtensions,可根據實際情況綁定在特殊的Url Path上
在Startup中添加必要的引用,其中自動注冊。
編寫JobHandler,繼承AbstractJobHandler或者直接實現接口IJobHandler,通過context.JobLogger 記錄執行過程和結果,在AdminWeb上可查看的哦
3.2 配置信息
管理端地址和端口是必填信息,其他根據實際情況,選擇配置,配置項說明見下代碼中的注釋
在其他Http服務中使用
只需要實現Http請求的攔截,并判斷post請求中content-Type="application/octet-stream",并使用XxlRpcServiceHandler來處理流 即可。
其他說明
XXL-JOB內置的RPC是使用Hessian協議,這個有點坑。很多都是java特有的屬性和標識,比如類名什么的。在本項目中,并沒有實現完整的Hessian2協議,只實現了使用到的類型,當然擴展起來也非常方便。如果有人要單獨使用Hessian 這個類庫的話,要特別注意這個問題。
有任何問題,可Issue反饋 ,最后感謝 xxl-job
原文:https://www.cnblogs.com/xuanye/p/xxl-job-executor-dotnet-port.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的xxl-job dotnet core executor执行器开源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 容器化单页面应用中Nginx反向代理与K
- 下一篇: 程序员生活之路--来自程序员爸爸的一封信