MinGo.Quartz 1.1.0

dotnet add package MinGo.Quartz --version 1.1.0
                    
NuGet\Install-Package MinGo.Quartz -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MinGo.Quartz" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MinGo.Quartz" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="MinGo.Quartz" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MinGo.Quartz --version 1.1.0
                    
#r "nuget: MinGo.Quartz, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MinGo.Quartz@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MinGo.Quartz&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=MinGo.Quartz&version=1.1.0
                    
Install as a Cake Tool

MinGo.Quartz.SDK — Quartz.NET 基础补强 + Agent SDK(L1 + L2 合并仓)

本仓合并了原 L1 MinGo.Quartz(Quartz.NET 基础补强 + 开放可观测性)与 L2 MinGo.Quartz.Agent(Agent SDK + 跨端共享契约)两层,所有包在同级目录下扁平组织。

依赖方向:MinGo.Quartz.Agent → MinGo.Quartz.Agent.Abstractions + MinGo.Quartz.OpenTelemetry → MinGo.Quartz → Quartz.NET + OpenTelemetry.Api。

项目构成

L1 — 基础补强 + 开放可观测性

项目 说明
src/MinGo.Quartz 观测模型(SchedulerSnapshot/TriggerSnapshot/JobSnapshot/JobExecutionRecord)+ IQuartzObservabilityReader + 扩展点(Enricher/Filter/JobData 脱敏)
src/MinGo.Quartz.OpenTelemetry OTel 集成:ActivitySource/Meter/ILogger,经 IJobListener/ITriggerListener/ISchedulerListener 自动埋点
tests/MinGo.Quartz.Tests 核心读取器/脱敏/过滤/Enricher/DI 测试
tests/MinGo.Quartz.OpenTelemetry.Tests span/metric/脱敏/DI 集成测试

L2 — Agent SDK + 跨端共享契约

项目 说明
src/MinGo.Quartz.Agent.Abstractions 契约包:DTO / 接口 / Attribute / 枚举 / Common(MinGoJsonDefaults、ApiResponse 解包、Result、Paged)。L3 Platform 只依赖本包
src/MinGo.Quartz.Agent Agent SDK:服务实现 + AddMinGoAgent() / UseMinGoAgent() / MapMinGoAgentApi()
tests/MinGo.Quartz.Agent.Tests xUnit 单测/集成测试(RAMJobStore 真实 Scheduler)
samples/Sample.Agent 宿主示例(Quartz DI + RAMJobStore)
samples/Sample.Jobs 可复用 Job 库(带 [QuartzJob] / [JobParameter] 元数据)
samples/Sample.PlatformStub 极简 L3 风格平台桩(本地端到端验证注册/心跳/上报/日志)

快速开始

仅使用 L1(可观测性)

// 1) 宿主注册 L1 服务(读取器 + 默认脱敏器)
services.AddMinGoQuartzOpenTelemetry(o =>
{
    o.ActivitySourceName = "MinGo.Quartz";
    o.MeterName = "MinGo.Quartz";
    o.CaptureJobDataMap = true;          // 把 JobData(脱敏后)写入 span
});

// 2) 对调度器挂载监听器(创建 scheduler 后、Start 前均可)
using var observability = MinGoQuartzObservability.Attach(scheduler, services);

// 3) 宿主侧接 OTel SDK(导出器由宿主决定)
builder.Services.AddOpenTelemetry()
    .WithTracing(t => t.AddSource("MinGo.Quartz"))
    .WithMetrics(m => m.AddMeter("MinGo.Quartz"));

使用 L2(Agent SDK,自动组合 L1)

var builder = WebApplication.CreateBuilder(args);

// Quartz(宿主自行注册 Scheduler;SDK 自动发现单例/集合/ISchedulerFactory)
builder.Services.AddQuartz(q =>
{
    q.SchedulerName = "MyScheduler";
    q.UseInMemoryStore();
});
builder.Services.AddQuartzHostedService(o => o.WaitForJobsToComplete = true);

// MinGo Agent(注册/心跳/上报 + 自动挂 L1 可观测监听器 + 执行日志监听器)
builder.AddMinGoAgent();

var app = builder.Build();
app.MapMinGoAgentApi();          // /api/agent/...
app.Run();

config.yaml(可选,SDK 自动加载):

agent:
  heartbeatIntervalSeconds: 30
  externalUrl: "http://localhost:5001"
platform:
  url: "http://localhost:5256"   # L3 Platform 地址
  apiToken: "your-api-token"

Agent Minimal API(MapMinGoAgentApi,前缀默认 /api/agent)

  • GET /schedulers、GET /scheduler —— Scheduler 列表/默认状态
  • GET/PUT/DELETE /jobs... —— Job 列表/详情/创建替换/更新/删除
  • POST /jobs/{name}[/{group}]/trigger|pause|resume —— Job 级操作
  • GET /manifest —— Agent 可调度 Job 清单(含参数元数据)

X-Scheduler-Name Header 或 ?schedulerName= 用于多 Scheduler 路由。

观测约定

  • Span:quartz.job.execute、quartz.trigger.fire、quartz.trigger.misfire、quartz.scheduler.lifecycle。
  • Metric:quartz.job.executions(counter)、quartz.job.duration(histogram)、quartz.trigger.fires/misfires(counter)、quartz.scheduler.executing.jobs(gauge)。
  • 安全:JobDataMap 键含 password/token/secret/connectionstring/... 时值替换为 ***(DefaultJobDataRedactor,默认开启)。

关键能力(L2 相对旧 MinGo.Qap.Agent 的补强)

  • Misfire 闭环:QuartzOptionsDto.MisfirePolicy 按 Trigger 类型真实写入 CronScheduleBuilder / SimpleScheduleBuilder;GetJobAsync 从 Trigger 回读真实指令(ReadMisfirePolicy),不再写死 FireAndProceed。
  • 并发语义化:DisallowConcurrentExecution / StoreDurable / RequestRecovery 直接写入 JobDetail,而非仅 JobDataMap 标记。
  • Trigger 级操作:pause / resume / unschedule 单 Trigger;Scheduler start / standby;Job interrupt。
  • L1 组合:AddMinGoAgent() 内部调用 AddMinGoQuartzOpenTelemetry(),SchedulerListenerAttacher 在每个被发现的 Scheduler 上自动挂载 L1 观测监听器 + Agent 执行日志监听器。

构建与测试

正常 .NET 安装环境:dotnet build MinGo.Quartz.SDK.slnx。 本沙箱/精简环境请用 .\scripts\build.ps1 与 .\scripts\test.ps1(详见 scripts/README.md)。

依赖:Quartz 3.15.1、OpenTelemetry.Api 1.15.3、NSwag.AspNetCore 14.7.1、YamlDotNet 16.3.0;目标框架 net10.0(后续可多目标 net8.0)。

里程碑状态

L1

里程碑 状态
M1 数据模型 + 读取器 ✅ 8/8 测试通过
M2 扩展点(Enricher/Redactor/Filter) ✅
M3 OpenTelemetry 埋点 ✅ 4/4 测试通过
M4 打包与文档 ✅ MinGo.Quartz 1.0.0 / MinGo.Quartz.OpenTelemetry 1.0.0

L2

里程碑 状态
M1 Abstractions 契约迁移 ✅ 编译 + JobKeyDto/JobTypeQualifiedName 单测 21/21
M2 Agent SDK 迁移 + L1 组合 ✅ Sample.Agent 启动:注册/心跳/Scheduler 上报/日志上传 E2E 通过
M3 补强(Misfire/并发/Trigger 级操作) ✅ 单测/集成测试 51/51
M4 打包与文档 ✅ MinGo.Quartz.Agent.Abstractions 1.0.0 / MinGo.Quartz.Agent 1.0.0(依赖 L1 1.0.0)
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on MinGo.Quartz:

Package Downloads
MinGo.Quartz.OpenTelemetry

OpenTelemetry integration for Quartz.NET: tracing, metrics and structured logging emitted from Quartz listeners, following open observability conventions.

MinGo.Quartz.Agent.Abstractions

Agent SDK shared contracts: job discovery/scheduling DTOs, agent registration and heartbeat models, attributes, enums and common helpers shared between the embeddable Quartz agent (L2) and the management platform (L3).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 141 9/8/2026
1.0.0 136 9/6/2026
0.0.1 139 9/6/2026