.Net core Worker Service 擴充套件庫

ClrsDream發表於2021-05-26

.Net core Worker Service 擴充套件庫,目的為更易控制每一個worker 的執行。

提供根據配置檔案對每一個Worker的停止、啟動和自動解析註冊Worker。

獲取配置的方式不限於 使用配置檔案,也可以使用資料庫,也可以使用 [WeTools.SqlSugarDBConfigProvider](NuGet Gallery | WeTools.SqlSugarDBConfigProvider 1.0.0) nuget包,讀取資料庫配置。

未來計劃 增加一個輕量級的服務配置中心,更方便的管理服務。

獲取地址:NuGet Gallery | WeTools.WorkerService 1.0.1  

Install-Package WeTools.WorkerService -Version 1.0.1

方式1,worker 型別通過配置檔案解析

  1. 在配置檔案新增節點
"WeTools": {
    "Dir": "/", //worker 所在資料夾, 根目錄為 / ;
    "Workers": [
      {
        "Name": "Worker2",
        "WorkerName": "Worker2",//具體的實現類名
        "Enable": true //此節點控制worker 的執行
      },
      {
        "Name": "Worker",
        "WorkerName": "Worker",
        "Enable": true
      }

    ]
  }

  

  1. 新建worker,並繼承WeToolBackgroundService。

  2. 在Program類 ConfigureServices 裡註冊服務

services.AddServiceOptions(hostContext);
services.UseWorkers();

  

方式2 worker 通過特性解析

  1. 在配置檔案新增節點
"WeTools": {
    "Worker": {
      "name":"testworker",//可選,預設為特性輸入的名稱
      "workername":"",//可選,預設為特性解析的worker類名
      "Enable": true
    },
    "Worker2":{
     "Enable": true
    }
  }

  

或者 自定義配置節點 
"myconfig": 
{ 
    "DemoWorker": 
    { 
        "name": "adf123", 
        "Enable": true 
    } 
}            

  


或者 根節點下直接新增
"DemoWorker": 
{ 
    "Enable": true 
}, 
"DemoWorker2": 
{ 
    "Enable": true 
}, 

  

 
  1. 新建worker,繼承WeToolBackgroundService 並在worker類新增特性

    	[Worker("DemoWorker")]
        public class TestWorker : WeToolBackgroundService
        {
        }
    

      

3.在Program類 ConfigureServices 裡註冊服務

引數對應 1 中的配置 選擇不同的方法。

這裡不需要呼叫 AddServiceOptions 方法。

services.UseWorker(hostContext.Configuration);
services.UseWorker(hostContext);
services.UseWorker(hostContext.Configuration.GetSection("myconfig"));

  

現在即可啟動程式。

相關文章