Reliability patterns
Timeout handling:
[JobTimeout(Minutes = 10)]
public class LongRunningJob : IJob { ... }
Retry with exponential backoff:
[RetryPolicy(MaxAttempts = 3, BackoffMultiplier = 2.0)]
public class UnreliableJob : IJob { ... }
Dead-letter queue: Failed jobs after max retries go to DLQ for manual review.
Circuit breaker: Pause job execution if downstream dependency is unhealthy.
Demo marker: DEMO: Create scheduled job → watch execution metadata