天天看點

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

Hangfire:是一個開源的job排程系統,支援分布式JOB!!

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

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

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

開源位址:

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

剝離Job排程和業務

傳統使用Hangfire都是把JOb的處理邏輯代碼寫在和Hangfire的同一個工程!

<code>缺點: 這樣就耦合在了一起,如果業務線增大,會導緻每個業務線的Job處理邏輯都得和Hangfire耦合在一起!釋出的時候所有業務線Job都得暫停排程</code>

而使用了Hangfire.HttpJob的話 就是把Hangfire的服務拓展成可以把Job的處理邏輯代碼寫在别的工程裡面(以webapi的形式暴露給Hangfire去排程)

<code>優點:這樣就解耦了Hangfire和業務處理邏輯,業務job開發者可以忽略Hangfire的存在!不同的業務線分開不同的JobAgent可以分别部署,釋出互不影響</code>

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

特點是:

業務與排程完全分離。

支援定點執行 延遲執行 周期性循環執行,支援秒級别

配合JobAgent元件可以實作Job管理 監控 日志等

一次性的job 隻運作一次

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

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

如下圖所示

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

字段名稱

備注

JobName

你給這個httpjob起的名稱【必填項】

Method

這個httpjob的請求方式 "get" 或者 "post" 【必填項】

ContentType

這個httpjob的請求ContentType 預設"application/json" 【必填項】

Url

這個httpjob的請求url 【必填項】

DelayFromMinutes

需要延遲執行的分鐘,注意:0 代表立刻執行; -1代表隻能手動觸發; &gt;=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

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用
開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

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

按鈕名稱

說明

加入隊列

如果你想讓這個job立即執行 可以點選該按鈕

删除選中

如果你想删除這個job 可以點選該按鈕

帶參數執行

這個按鈕的作用是 重新定義JSON裡面的Data的值 并立即執行的意思,在AgentJob場景下使用較多

停止Job

這個隻能在AgentJob才可以使用

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用
開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用
開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

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

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

點選某一個jobName 進入該jobName下所有的運作完成的job清單

開源分布式Job系統,排程與業務分離-如何建立一個計劃HttpJob任務 開源分布式Job系統,排程與業務分離-如何建立一個計劃httpjob任務開源分布式Job系統,排程與業務分離-如何建立周期性的HttpJob任務開源分布式Job系統,排程與業務分離-HttpJob.Agent元件介紹以及如何使用

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

繼續閱讀