日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目介紹:

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

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

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

?

開源地址:

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

?

?

該項目目的是:

剝離Job調度和業務

?

Hangfire.HttpJob究竟是干嘛的

  • 傳統使用Hangfire都是把JOb的處理邏輯代碼寫在和Hangfire的同一個工程!
  • 缺點: 這樣就耦合在了一起,如果業務線增大,會導致每個業務線的Job處理邏輯都得和Hangfire耦合在一起!發布的時候所有業務線Job都得暫停調度
  • 而使用了Hangfire.HttpJob的話 就是把Hangfire的服務拓展成可以把Job的處理邏輯代碼寫在別的工程里面(以webapi的形式暴露給Hangfire去調度)
  • 優點:這樣就解耦了Hangfire和業務處理邏輯,業務job開發者可以忽略Hangfire的存在!不同的業務線分開不同的JobAgent可以分別部署,發布互不影響

Hangfire.HttpJob

是對Hangfire的一個擴展插件,利用Hangfire.HttpJob可以快速搭建分部署Job調度Server。

特點是:

  1. 業務與調度完全分離。
  2. 支持定點執行 延遲執行 周期性循環執行,支持秒級別
  3. 配合JobAgent組件可以實現Job管理 監控 日志等

?

共有三篇文章

?

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

?

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

?

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



?

?

?

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

計劃httpjob任務的定義

一次性的job 只運行一次

1. 進入hangfire的后臺 點擊 左側欄【計劃】

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

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

如下圖所示

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 成功如下圖所示:

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

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

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

job到時執行 如下圖所示

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

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

也可以在Tag頁面進行查看

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

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

轉載于:https://www.cnblogs.com/yudongdong/p/10942028.html

總結

以上是生活随笔為你收集整理的开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。