# DotPowerJob **Repository Path**: combac/dotpower-job ## Basic Information - **Project Name**: DotPowerJob - **Description**: 对powerjob的dotnet core work实现,支持powerjob 4.5+ - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-08-07 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # ASPNetCoreExecutor 这是一个基于 ASP.NET Core 的分布式任务执行器,用于与 PowerJob 服务端进行交互,接收并执行由服务端调度的任务。 ## 项目结构 - **Pages** 包含 Razor 页面,用于展示 Web 界面,如首页、隐私页、错误页等。 - **Jobs** 存放任务处理器类,每个任务处理器实现 `IJobHandler` 接口,用于处理来自 PowerJob 服务端的任务请求。 - **wwwroot** 静态资源目录,包含 CSS、JavaScript 和 Bootstrap 文件。 - **Program.cs / Startup.cs** ASP.NET Core 应用程序的启动类,配置服务和中间件。 - **DotPowerJob.Core** 核心库,包含与 PowerJob 交互的逻辑,如任务调度、实例状态报告、心跳机制等。 ## 功能特性 - 支持从 PowerJob 服务端接收任务并执行。 - 提供任务执行日志记录。 - 支持定时任务、分布式任务执行。 - 提供任务执行状态上报功能。 - 支持 Worker 心跳上报,确保服务端了解当前执行器状态。 - 提供 Web 管理界面,可查看执行器运行状态。 ## 使用说明 ### 1. 配置 在 `appsettings.json` 或 `appsettings.Development.json` 中配置 PowerJob 服务端地址和应用名称: ```json { "PowerJob": { "ServiceAddresses": "http://powerjob-server:7700", "AppName": "AspNetCoreExecutor", "Protocol": "HTTP", "ClientAddress": "http://localhost:5000" } } ``` ### 2. 实现任务处理器 在 `Jobs` 目录下创建新的任务处理器类,继承 `AbstractJobHandler` 并重写 `Execute` 方法: ```csharp namespace ASPNetCoreExecutor.Jobs { [JobHandler("MyCustomJobHandler")] public class MyCustomJobHandler : AbstractJobHandler { private readonly ILogger _logger; public MyCustomJobHandler(ILogger logger) { _logger = logger; } public override async Task Execute(JobExecuteContext context) { _logger.LogInformation("Executing custom job handler."); // 执行任务逻辑 return PowerJobResponse.Successed(); } } } ``` ### 3. 启动项目 使用以下命令运行项目: ```bash dotnet run ``` 或者通过 Visual Studio 启动调试。 ### 4. 注册到 PowerJob 服务端 确保 PowerJob 服务端已启动,并将当前执行器注册到服务端,以便接收任务。 ## 依赖组件 - PowerJob 服务端(调度中心) - ASP.NET Core 6.0+ - Bootstrap 5.x - jQuery ## 许可证 本项目采用 MIT 许可证,请参阅 [LICENSE](LICENSE) 文件获取详细信息。 ```