Background Processing
AutoMate.API gebruikt twee mechanismen voor achtergrondverwerking: Hangfire voor recurring jobs en batch job processing, en FastEndpoints JobQueue voor asynchrone taken met tracking.
Hangfire
Configuratie
Hangfire wordt geconfigureerd in Program.cs met SQL Server als storage backend (de Jobs-database):
Relevante instellingen:
Instelling | Waarde | Toelichting |
|---|---|---|
Storage | SQL Server ( | Persistent job storage |
|
| Hangfire maakt schema automatisch aan |
| 15 seconden | Hoe vaak de server de queue controleert |
| Hangfire Pro | Batch job processing voor IAM HR Sync |
Hangfire Pro — Batches
Hangfire Pro batches worden gebruikt door de IAM Employee Schedule Dispatcher om per tenant een batch van sync jobs aan te maken. Een batch groepeert meerdere jobs en maakt het mogelijk om op de voltooiing van de hele batch te wachten of een continuation job te plannen.
Dashboard
Het Hangfire dashboard is beschikbaar op /jobs. Toegang vereist OIDC-authenticatie via een aparte DashboardCookie/DashboardOidc authentication scheme. Niet-geauthenticeerde requests worden doorgestuurd naar het OIDC login-flow.
Het Aspire dashboard toont een directe link naar /jobs naast de API-resource.
Recurring Jobs
Alle recurring jobs draaien in UTC. Ze worden geregistreerd bij applicatiestart via IRecurringJobManager.AddOrUpdate.
Job ID | Cron | Schedule | Beschrijving |
|---|---|---|---|
|
| 01:00 UTC dagelijks | IAM metrics genereren (dagelijks) |
|
| 05:00 UTC 1e van maand | IAM metrics genereren (maandelijks) |
|
| Elke 4 uur | Shared mailboxes synchroniseren |
|
| Elk uur | Tenant info synchroniseren |
|
| Elk uur | AutoPilot devices synchroniseren |
|
| Elke 15 minuten | HR sync jobs dispatchen per tenant |
|
| Elke 30 minuten | Gefaalde jobs annuleren na retries |
IAM Employee Schedule Dispatcher
De IamEmployeeScheduleDispatcherJob (iam-employee-schedule-dispatcher-15m) is de centrale dispatcher voor IAM HR Sync. De flow:
Tenant iteratie — De dispatcher haalt de lijst van actieve tenants op.
Tenant-specifieke cron expressions — Per tenant wordt de geconfigureerde sync-planning gelezen uit de tenant configuratie. Dit maakt het mogelijk dat elke tenant op een eigen schema synchroniseert.
Tijdzone support — De dispatcher respecteert de tijdzone van de tenant bij het evalueren of een sync job gestart moet worden.
Batch aanmaken — Voor elke tenant die aan de beurt is wordt een Hangfire batch aangemaakt met de individuele sync jobs (via Hangfire Pro batches).
De dispatcher draait elke 15 minuten en bepaalt zelf welke tenants op dat moment gesynchroniseerd moeten worden op basis van hun cron configuratie.
FastEndpoints Job Manager
Naast Hangfire biedt AutoMate.API een Job Manager op basis van FastEndpoints JobQueue voor asynchrone taken die een tracking ID teruggeven aan de aanroeper.
Eigenschappen
Gekoppeld aan de
Jobs-database (gedeeld met Hangfire)Taken verlopen na maximaal 24 uur
Maximale uitvoerduur circa 2 minuten
Multi-tenant support
Implementeer ITenantTrackableJob om de TenantId automatisch op te slaan bij het inplannen van een job. In de handler is de TenantId op te halen via IJobQueryProvider:
Endpoints
Endpoint | Beschrijving |
|---|---|
| Voorbeeld endpoint om een job te plannen |
| Voortgang van een job opvragen |
| Job annuleren |
| Alle jobs opvragen |