pub struct SupervisorBuilder<'a> { /* private fields */ }Expand description
Builds a Supervisor with configurable runtime loops.
Worker execution, durable intent promotion, scheduler, and reaper loops are
enabled by default. Disabling the worker also disables intent promotion;
SupervisorBuilder::disable_intent_promoter can disable only promotion.
Every enabled supervisor polls independently, including when no intents are
pending. Deployments may tune IntentPromoterConfig or disable redundant
promoters, but must retain promoter coverage for every registered type that
can receive durable intents.
Call SupervisorBuilder::with_registry or
SupervisorBuilder::with_catalog before SupervisorBuilder::build when
worker or reaper loops remain enabled.
Implementations§
Source§impl<'a> SupervisorBuilder<'a>
impl<'a> SupervisorBuilder<'a>
Sourcepub fn with_registry(self, registry: JobRegistry) -> Self
pub fn with_registry(self, registry: JobRegistry) -> Self
Registers the handlers used by worker execution and reaper terminal hooks.
A registry is required when worker or reaper loops are enabled. Scheduler-only supervisors can be built without one.
Sourcepub fn with_catalog(self, catalog: impl Borrow<JobCatalog>) -> Self
pub fn with_catalog(self, catalog: impl Borrow<JobCatalog>) -> Self
Registers handlers from a JobCatalog.
This does not sync database job definitions. Call
JobCatalog::sync_definitions before starting the supervisor or
creating schedules. Pass &catalog when the caller will continue using
the catalog for schedule, enqueue, or workflow helpers after building the
supervisor.
§Registry Source
Calling this and Self::with_registry on the same builder is rejected
by Self::build. Choose one registration source per builder.
Sourcepub fn disable_worker(self) -> Self
pub fn disable_worker(self) -> Self
Disables worker job claiming, execution, and durable intent promotion for this supervisor.
Sourcepub fn disable_intent_promoter(self) -> Self
pub fn disable_intent_promoter(self) -> Self
Disables durable enqueue-intent promotion while leaving ordinary worker claiming and execution enabled.
Use this only when another compatible promoter covers every job type that can receive intents, or when the application never records intents. Disabling all applicable promoters leaves accepted intents pending indefinitely.
Sourcepub fn with_intent_promoter_config(self, config: IntentPromoterConfig) -> Self
pub fn with_intent_promoter_config(self, config: IntentPromoterConfig) -> Self
Overrides the intent promoter’s polling and batch controls.
This does not enable a promoter disabled by Self::disable_worker or
Self::disable_intent_promoter.
Sourcepub fn disable_scheduler(self) -> Self
pub fn disable_scheduler(self) -> Self
Disables cron schedule materialization for this supervisor.
Sourcepub fn disable_reaper(self) -> Self
pub fn disable_reaper(self) -> Self
Disables expired-lease reaping for this supervisor.
Sourcepub fn with_job_lifecycle_observer(
self,
observer: impl JobLifecycleObserver + 'static,
) -> Self
pub fn with_job_lifecycle_observer( self, observer: impl JobLifecycleObserver + 'static, ) -> Self
Registers a best-effort observer for committed job lifecycle events.
Observer callbacks run outside Runledger storage transactions. A callback timeout or panic is logged and does not change durable job state.
Sourcepub fn build(self) -> Result<Supervisor, RuntimeError>
pub fn build(self) -> Result<Supervisor, RuntimeError>
Starts the enabled runtime loops and returns the owning supervisor.
Returns an error when worker or reaper loops are enabled without a job registry.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for SupervisorBuilder<'a>
impl<'a> !UnwindSafe for SupervisorBuilder<'a>
impl<'a> Freeze for SupervisorBuilder<'a>
impl<'a> Send for SupervisorBuilder<'a>
impl<'a> Sync for SupervisorBuilder<'a>
impl<'a> Unpin for SupervisorBuilder<'a>
impl<'a> UnsafeUnpin for SupervisorBuilder<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more