Hangfire:是一個開源的job調度系統,支持分佈式JOB!!html
Hangfire.HttpJob 是我針對Hangfire開發的一個組件,該組件和Hangfire自己是獨立的。能夠獨立更新Hangfire版本不影響!node
該組件已被Hangfire官方採納,在Hangfire官網能夠查到:git
開源地址:github
https://github.com/yuzd/Hangfire.HttpJobweb
剝離Job調度和業務json
缺點: 這樣就耦合在了一塊兒,若是業務線增大,會致使每一個業務線的Job處理邏輯都得和Hangfire耦合在一塊兒!發佈的時候全部業務線Job都得暫停調度
優勢:這樣就解耦了Hangfire和業務處理邏輯,業務job開發者能夠忽略Hangfire的存在!不一樣的業務線分開不一樣的JobAgent能夠分別部署,發佈互不影響
是對Hangfire的一個擴展插件,利用Hangfire.HttpJob能夠快速搭建分部署Job調度Server。api
特色是:服務器
以下圖所示: markdown
針對週期性做業 能夠看到有三個按鈕app
按鈕名稱 | 說明 |
---|---|
新增週期性做業 | 新增一個週期性httpjob做業 |
編輯週期性做業 | 若是你從新編輯該週期性httpjob做業內容能夠點擊該按鈕 |
Cron表達式生成 | 跳轉到Cron表達式生成頁面 |
點擊【Cron表達式生成】 進入Cron表達式生成頁面 以下圖:
例如 我想要 天天晚上8點05分執行
得出結果:【5 20 * * *】
點擊【新增週期性做業】按鈕 會出現一個json編輯器
字段名稱 | 備註 |
---|---|
JobName | 你給這個httpjob起的名稱【必填項】 |
Method | 這個httpjob的請求方式 "get" 或者 "post" 【必填項】 |
ContentType | 這個httpjob的請求ContentType 默認"application/json" 【必填項】 |
Url | 這個httpjob的請求url 【必填項】 |
Cron | Cron表達式 能夠先用【Cron表達式生成】功能生成好,若是爲空 表明只能手動觸發執行 |
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 |
好比 天天晚上8點執行一次查詢訂單已完成超xx小時了(xx做爲參數) 可是尚未點評的 發短信讓催點評 接口地址:http://localhost:5000/scoreOrder 訪問方式是POST 接口有basicAuth驗證 用戶名是admin 密碼是test # 那麼對應以下填寫: { "JobName": "scoreOrder", //Job名稱 "Method": "POST", //http請求的方法 "ContentType": "application/json", //http參數類型 "Url": "http://localhost:5000/scoreOrder",//接口的地址 "Cron": "5 20 * * *", //天天晚上8點05分執行 "Data": { "Hour":48 //傳的參數超過48小時 }, "Timeout": 5000, //http調用超時設置 "BasicUserName": "admin", //http調用的basicAuth "BasicPassword": "test", //http調用的basicAuth "EnableRetry": false, "SendSucMail": false, "SendFaiMail": true, //http失敗時發郵件通知 "Mail": "1877682825@qq.com", //http調用失敗通知我 "AgentClass": "" }
點擊【提交】
我剛纔設置的是20:05分執行
目前時間是19:50
正好是還有15分鐘就要執行了 說明Cron表達式沒有問題
按鈕名稱 | 說明 |
---|---|
當即執行 | 若是你但願不要等到8點05想當即就執行能夠點擊它 |
中止或開始任務 | 若是你但願暫停這個週期性job 能夠點它,點完以後再次點擊就是開啓 |
編輯週期任務 | 若是你剛剛添加的參數有錯誤,能夠點擊這個按鈕從新編輯提交 |
若是一個週期性job是暫停的 會以紅色字體展現
點擊提交修改
說明:Tag頁面是按jobName進行分組查詢的
點擊某一個jobName 進入該jobName下全部的運行完成的job列表