項目介紹:
Hangfire:是一個開源的job調度系統,支持分佈式JOB!!html
Hangfire.HttpJob 是我針對Hangfire開發的一個組件,該組件和Hangfire自己是獨立的。能夠獨立更新Hangfire版本不影響!git
該組件已被Hangfire官方採納,在Hangfire官網能夠查到:github
開源地址:json
https://github.com/yuzd/Hangfire.HttpJob服務器
該項目目的是:
剝離Job調度和業務app
共有三篇文章
開源分佈式Job系統,調度與業務分離-如何建立一個計劃httpjob任務
開源分佈式Job系統,調度與業務分離-如何建立週期性的HttpJob任務
開源分佈式Job系統,調度與業務分離-HttpJob.Agent組件介紹以及如何使用
本篇教程:如何建立一個計劃httpjob任務
計劃httpjob任務的定義
一次性的job 只運行一次編輯器
1. 進入hangfire的後臺 點擊 左側欄【計劃】
會看到一個按鈕名稱叫 【新增常規做業】以下圖所示: 分佈式
2. 點擊【新增常規做業】會出現一個json編輯器
以下圖所示 post
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 |
設置通知郵件地址 若是有多個用半角逗號隔開 | |
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 成功以下圖所示:
能夠看到會在15分鐘後執行該job
針對該job 能夠看到有四個按鈕url
按鈕名稱 | 說明 |
---|---|
加入隊列 | 若是你想讓這個job當即執行 能夠點擊該按鈕 |
刪除選中 | 若是你想刪除這個job 能夠點擊該按鈕 |
帶參數執行 | 這個按鈕的做用是 從新定義JSON裏面的Data的值 並當即執行的意思,在AgentJob場景下使用較多 |
中止Job | 這個只能在AgentJob纔可使用 |
job到時執行 以下圖所示
job執行完畢 在完成列表能夠查詢
點擊job編號進入job詳情頁查看具體執行狀況和日誌
也能夠在Tag頁面進行查看
說明:Tag頁面是按jobName進行分組查詢的
點擊某一個jobName 進入該jobName下全部的運行完成的job列表