2.3 KiB
2.3 KiB
Scheduler Queue — Sprint 16 Coordination Notes
Queue work now has concrete contracts from StellaOps.Scheduler.Models:
- Planner inputs reference
ScheduleandImpactSetsamples (samples/api/scheduler/). - Runner segment payloads should carry
runId,scheduleId?,tenantId, and the impacted digest list (mirrorsRun.Deltas). - Notify fanout relies on the
DeltaSummaryshape already emitted by the model layer.
Action items for SCHED-QUEUE-16-401..403
- Reference
StellaOps.Scheduler.Modelsso adapters can serialiseRun/DeltaSummarywithout bespoke DTOs. - Use the canonical serializer for queue messages to keep ordering consistent with API payloads.
- Coverage: add fixture-driven tests that enqueue the sample payloads, then dequeue and re-serialise to verify byte-for-byte stability.
- Expose queue depth/lease metrics with the identifiers provided by the models (
Run.Id,Schedule.Id).
JetStream failover notes
SchedulerQueueOptions.Kind = "nats"will spin upNatsSchedulerPlannerQueue/NatsSchedulerRunnerQueueinstances backed by JetStream.SchedulerQueueHealthCheckpings both planner and runner transports; register viaAddSchedulerQueueHealthCheck()to surface in/healthz.- Planner defaults:
scheduler: queue: kind: nats deadLetterEnabled: true nats: url: "nats://nats:4222" planner: stream: SCHEDULER_PLANNER subject: scheduler.planner durableConsumer: scheduler-planners deadLetterStream: SCHEDULER_PLANNER_DEAD deadLetterSubject: scheduler.planner.dead runner: stream: SCHEDULER_RUNNER subject: scheduler.runner durableConsumer: scheduler-runners redis: deadLetterStream: scheduler:planner:dead idempotencyKeyPrefix: scheduler:planner:idemp: - Retry / dead-letter semantics mirror the Redis adapter: attempts beyond
MaxDeliveryAttemptsare shipped to the configured dead-letter stream with headers describingrunId,scheduleId, and failure reasons. SetdeadLetterEnabled: falseto drop exhausted messages instead. - Depth metrics surface through
scheduler_queue_depth{transport,queue}; both transports publish lightweight counters to drive alerting dashboards.
These notes unblock the queue guild now that SCHED-MODELS-16-102 is complete.