Dieses Repository enthält Erweiterungen, Implementierungen und Hilfsbibliotheken für den Job-Manager von ToolWheel. Ziel ist eine modulare, erweiterbare und testbare Infrastruktur zum Definieren, Planen, Ausführen und Absichern (Resilience) von Hintergrund-Jobs.
Kurzüberblick
- Ziel-Framework:
net8.0(alle Projekte targeten .NET 8) - Modularer Aufbau: Abstraktionen, Kernimplementierungen, Scheduler, Resilience‑Strategien
- Paketierbar: Einige Module sind als NuGet‑Pakete vorgesehen (z. B.
ToolWheel.Extensions.JobManager)
Projekte und ihre Aufgaben
-
ToolWheel.Extensions.JobManager.Abstraction- Zweck: Public API, Verträge und DTOs
- Enthält: Interfaces wie
IJob,IJobExecutor,JobDescriptionsowie Konfigurationsmodelle - Keine konkreten Implementierungen — Konsumenten implementieren diese Verträge
-
ToolWheel.Extensions.JobManager- Zweck: Kernbibliothek mit Basisklassen und Default‑Implementierungen
- Enthält: Options/Configuration Models (z. B.
JobManagerOptions), DI‑Extensions und In‑Memory Defaults - Liefert übliche Helfer zur Integration in Host‑Anwendungen
-
ToolWheel.Extensions.JobManager.Scheduler- Zweck: Scheduling/Triggering von Jobs
- Enthält: Trigger‑Logik (Cron, FixedDelay, FixedRate, OneTime), Dispatcher,
-
ToolWheel.Extensions.JobManager.Resilience- Zweck: Robustheit und Fehlerbehandlung
- Enthält: Retry‑Policies, Backoff/Jitter, Timeouts und Circuit‑Breaker‑Mechanismen (ggf. Integration mit
Polly)
Kernfunktionen & Konzepte
- Jobs: Implementierungen von
IJoboder ähnlichen Abstraktionen, die die eigentliche Arbeitslogik enthalten - Executor: Koordiniert Ausführung, Logging, Metrics und Fehlerbehandlung für Jobs
- Scheduler: Plant Ausführungen anhand von Triggern und respektiert Concurrency‑Limits
- Resilience: Policies (Retries, Timeouts, Circuit Breaker) schützen gegen transient Failures
- DI/Configuration:
IServiceCollection‑Extensions vereinfachen die Integration in Host‑Apps
Beispiel (DI‑Registrierung)
// In Program.cs
var builder = Hosting.CreateDefaultBuilder(args);
builder.Services.AddJobManager() // aus ToolWheel.Extensions.JobManager
var app = builder.Build();
app.Run();Erweiterbarkeit
- Neue Scheduler‑Typen, Trigger und Resilience‑Strategien lassen sich über die vorhandenen Abstraktionen hinzufügen.
- Persistenz‑Integrationen (z. B. DB‑basierter JobStore) können implementiert und über DI eingebunden werden.