分布式Job系統Hangfire


開源分布式Job系統,調度與業務分離-如何創建一個計划HttpJob任務

 

項目介紹:

Hangfire:是一個開源的job調度系統,支持分布式JOB!!

Hangfire.HttpJob 是我針對Hangfire開發的一個組件,該組件和Hangfire本身是獨立的。可以獨立更新Hangfire版本不影響!

該組件已被Hangfire官方采納,在Hangfire官網可以查到:

 

開源地址:

https://github.com/yuzd/Hangfire.HttpJob

 

 

該項目目的是:

剝離Job調度和業務

 

共有三篇文章

 

開源分布式Job系統,調度與業務分離-如何創建一個計划httpjob任務

 

開源分布式Job系統,調度與業務分離-如何創建周期性的HttpJob任務

 

開源分布式Job系統,調度與業務分離-HttpJob.Agent組件介紹以及如何使用



 

 

 

本篇教程:如何創建一個計划httpjob任務

計划httpjob任務的定義

一次性的job 只運行一次

1. 進入hangfire的后台 點擊 左側欄【計划】

會看到一個按鈕名稱叫 【新增常規作業】如下圖所示: image

2. 點擊【新增常規作業】會出現一個json編輯器

如下圖所示 image

json編輯器的參數說明如下

字段名稱 備注
JobName 你給這個httpjob起的名稱【必填項】
Method 這個httpjob的請求方式 "get" 或者 "post" 【必填項】
ContentType 這個httpjob的請求ContentType 默認"application/json" 【必填項】
Url 這個httpjob的請求url 【必填項】
DelayFromMinutes 需要延遲執行的分鍾,注意:0 代表立刻執行; -1代表只能手動觸發; >=1代表延遲分鍾數 【必填項】
Data 這個httpjob在Method=“post”的時候可以指定post的內容,可以是一個對象也可以是一個string或者其他類型
Timeout 這個httpjob請求的超時時間(單位是毫秒 例如5000 代表是5秒)
BasicUserName 這個httpjob請求需要啟用basic認證時設置的username
BasicPassword 這個httpjob請求需要啟用basic認證時設置的密碼
EnableRetry 失敗的時候(比如超時 遠程服務器請求錯誤等)是否啟用重試 默認false ,如果設置true 會重試最大3次
SendSucMail 這個httpjob請求無異常的時候是否發送通知郵件 默認false
SendFaiMail 這個httpjob請求異常的時候是否發送通知郵件 默認true
Mail 設置通知郵件地址 如果有多個用半角逗號隔開
AgentClass 如果是AgentJob開發的httpjob 則需要填寫,填寫的是完整的類型格式{namespace},{程序集的名稱} 例如:TestHangfireAgent.Jobs,TestHangfireAgent

3.舉例

我開發了一個訂單支付超時檢測 接口 訪問地址是: http://localhost:5000/checkOrder 訪問方式是POST 訪問的參數是 orderId 接口有basicAuth驗證 用戶名是admin 密碼是test 希望計划 15分鍾后執行 看有沒有支付 沒有支付 就把訂單狀態改成取消 如果接口訪問失敗那么通知郵箱 1877682825@qq.com # 那么對應如下填寫: { "JobName": "checkOrder", //Job名稱 "Method": "POST", //http請求的方法 "ContentType": "application/json", //http參數類型 "Url": "http://localhost:5000/checkOrder",//接口的地址 "DelayFromMinutes": 15, //15分鍾后執行 "Data": { "OrderId":123456 //傳的參數 orderId }, "Timeout": 5000, //http調用超時設置 "BasicUserName": "admin", //http調用的basicAuth "BasicPassword": "test", //http調用的basicAuth "EnableRetry": false, "SendSucMail": false, "SendFaiMail": true, //http失敗時發郵件通知 "Mail": "1877682825@qq.com", //http調用失敗通知我 "AgentClass": "" } 

點擊【提交】添加job 成功如下圖所示:

image

可以看到會在15分鍾后執行該job

image

針對該job 可以看到有四個按鈕

按鈕名稱 說明
加入隊列 如果你想讓這個job立即執行 可以點擊該按鈕
刪除選中 如果你想刪除這個job 可以點擊該按鈕
帶參數執行 這個按鈕的作用是 重新定義JSON里面的Data的值 並立即執行的意思,在AgentJob場景下使用較多
停止Job 這個只能在AgentJob才可以使用

job到時執行 如下圖所示

image

job執行完畢 在完成列表可以查詢

image

點擊job編號進入job詳情頁查看具體執行情況和日志

image

也可以在Tag頁面進行查看

說明:Tag頁面是按jobName進行分組查詢的 image

點擊某一個jobName 進入該jobName下所有的運行完成的job列表

image


如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,轉載文章之后須在文章頁面明顯位置給出作者和原文連接,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM