Skip to main content

CamelContext

Struct CamelContext 

Source
pub struct CamelContext { /* private fields */ }
Expand description

The CamelContext is the runtime engine that manages components, routes, and their lifecycle.

§Lifecycle

A CamelContext is single-use: call start() once to launch routes, then stop() or abort() to shut down. Restarting a stopped context is not supported — create a new instance instead.

Implementations§

Source§

impl CamelContext

Source

pub fn builder() -> CamelContextBuilder

Source

pub async fn set_error_handler(&mut self, config: ErrorHandlerConfig)

Set a global error handler applied to all routes without a per-route handler.

Source

pub async fn set_tracing(&mut self, enabled: bool)

Enable or disable tracing globally.

Source

pub async fn set_tracer_config(&mut self, config: TracerConfig)

Configure tracing with full config.

Source

pub async fn with_tracing(self) -> Self

Builder-style: enable tracing with default config.

Source

pub async fn with_tracer_config(self, config: TracerConfig) -> Self

Builder-style: configure tracing with custom config. Note: tracing subscriber initialization (stdout/file output) is handled separately via init_tracing_subscriber (called in camel-config bridge).

Source

pub fn with_lifecycle<L: Lifecycle + 'static>(self, service: L) -> Self

Register a lifecycle service (Apache Camel: addService pattern)

For services exposing as_function_invoker(), the invoker is propagated to the route controller so that subsequent route definitions with function steps work correctly.

Prefer CamelContextBuilder::with_lifecycle when possible, which wires the invoker at build time before any routes are added.

Source

pub fn register_component<C: Component + 'static>(&mut self, component: C)

Register a component with this context.

Source

pub fn add_startup_check(&mut self, check: Box<dyn ConfigCheck>)

Register a startup ConfigCheck to be evaluated at the head of start(). Established by ADR-0033.

Checks are drained and executed synchronously before any route consumer is started. If any check returns Err, start() fails closed with CamelError::Config(_) and no route is started. The check list is consumed (moved) during start() so this method may be called multiple times to register an arbitrary number of checks.

Source

pub fn register_language( &mut self, name: impl Into<String>, lang: Box<dyn Language>, ) -> Result<(), LanguageRegistryError>

Register a language with this context, keyed by name.

Returns Err(LanguageRegistryError::AlreadyRegistered) if a language with the same name is already registered. Use resolve_language to check before registering, or choose a distinct name.

Source

pub fn resolve_language(&self, name: &str) -> Option<Arc<dyn Language>>

Resolve a language by name. Returns None if not registered.

Source

pub async fn add_route_definition( &self, definition: RouteDefinition, ) -> Result<(), CamelError>

Add a route definition to this context.

The route must have an ID. Steps are resolved immediately using registered components.

Source

pub fn registry(&self) -> MutexGuard<'_, Registry>

Access the component registry.

Source

pub fn registry_arc(&self) -> Arc<Mutex<Registry>>

Access the shared component registry Arc.

Source

pub fn runtime_execution_handle(&self) -> RuntimeExecutionHandle

Get runtime execution handle for file-watcher integrations.

Source

pub fn metrics(&self) -> Arc<dyn MetricsCollector>

Get the metrics collector.

Source

pub fn platform_service(&self) -> Arc<dyn PlatformService>

Get the platform service.

Source

pub fn readiness_gate(&self) -> Arc<dyn ReadinessGate>

Get the readiness gate port.

Source

pub fn platform_identity(&self) -> PlatformIdentity

Get the platform identity.

Source

pub fn leadership(&self) -> Arc<dyn LeadershipService>

Get the leadership service port.

Source

pub fn runtime(&self) -> Arc<dyn RuntimeHandle>

Get runtime command/query bus handle.

Source

pub fn producer_context(&self) -> ProducerContext

Build a producer context wired to this runtime.

Source

pub async fn runtime_route_status( &self, route_id: &str, ) -> Result<Option<String>, CamelError>

Query route status via runtime read-model.

Source

pub async fn start(&mut self) -> Result<(), CamelError>

Start all routes. Each route’s consumer will begin producing exchanges.

Only routes with auto_startup == true will be started, in order of their startup_order (lower values start first).

Source

pub async fn stop(&mut self) -> Result<(), CamelError>

Graceful shutdown with default 30-second timeout.

Source

pub async fn stop_timeout( &mut self, _timeout: Duration, ) -> Result<(), CamelError>

Graceful shutdown with custom timeout.

Note: The timeout parameter is currently not propagated to the RouteController’s per-route shutdown timeout. The RouteController uses a hardcoded 5-second default (DEFAULT_SHUTDOWN_TIMEOUT). Full propagation is planned for a future version.

Source

pub fn shutdown_timeout(&self) -> Duration

Get the graceful shutdown timeout used by stop().

Source

pub fn set_shutdown_timeout(&mut self, timeout: Duration)

Set the graceful shutdown timeout used by stop().

Source

pub async fn abort(&mut self)

Immediate abort — kills all tasks without draining.

Source

pub async fn health_check(&self) -> HealthReport

Check health status of all registered services and lifecycle services.

Source

pub fn health_registry(&self) -> Arc<HealthCheckRegistry>

Source

pub fn set_component_config<T: 'static + Send + Sync>(&mut self, config: T)

Store a component config. Overwrites any previously stored config of the same type.

Source

pub fn get_component_config<T: 'static + Send + Sync>(&self) -> Option<&T>

Retrieve a stored component config by type. Returns None if not stored.

Source

pub fn add_route_template( &self, spec: RouteTemplateSpec, ) -> Result<(), CamelError>

Register a route template specification.

Returns Err(CamelError) if a template with the same ID is already registered.

Source

pub fn get_route_template(&self, id: &str) -> Option<RouteTemplateSpec>

Retrieve a route template specification by its ID.

Source

pub fn template_ids(&self) -> Vec<String>

Return all registered template IDs.

Source

pub fn record_template_instance(&self, record: TemplateInstanceRecord)

Record a newly instantiated template instance.

Source

pub fn template_instances( &self, template_id: &str, ) -> Vec<TemplateInstanceRecord>

Return all instance records for a given template ID.

Source

pub fn register_idempotent_repository( &mut self, name: impl Into<String>, repo: Arc<dyn IdempotentRepository>, ) -> Result<(), RegistryError>

Register an idempotent repository.

Returns Err(RegistryError::AlreadyRegistered) if a repository with the same name is already registered.

Source

pub fn idempotent_repository( &self, name: &str, ) -> Option<Arc<dyn IdempotentRepository>>

Retrieve an idempotent repository by name.

Source

pub fn register_claim_check_repository( &mut self, name: impl Into<String>, repo: Arc<dyn ClaimCheckRepository>, ) -> Result<(), RegistryError>

Register a claim check repository.

Returns Err(RegistryError::AlreadyRegistered) if a repository with the same name is already registered.

Source

pub fn claim_check_repository( &self, name: &str, ) -> Option<Arc<dyn ClaimCheckRepository>>

Retrieve a claim check repository by name.

Trait Implementations§

Source§

impl ComponentContext for CamelContext

Source§

fn resolve_component(&self, scheme: &str) -> Option<Arc<dyn Component>>

Resolve a component by scheme.
Source§

fn resolve_language(&self, name: &str) -> Option<Arc<dyn Language>>

Resolve a language by name.
Source§

fn metrics(&self) -> Arc<dyn MetricsCollector>

Access the active metrics collector.
Source§

fn health(&self) -> Arc<dyn HealthCheckRegistry>

Access the active health-check registry. Read more
Source§

fn platform_service(&self) -> Arc<dyn PlatformService>

Access the active platform service.
Source§

fn register_route_health_check( &self, route_id: &str, check: Arc<dyn AsyncHealthCheck>, )

Source§

fn unregister_route_health_check(&self, route_id: &str)

Source§

fn route_id(&self) -> Option<&str>

Source§

fn register_current_route_health_check(&self, check: Arc<dyn AsyncHealthCheck>)

Source§

impl ComponentRegistrar for CamelContext

Source§

fn register_component_dyn(&mut self, component: Arc<dyn Component>)

Register a component instance.
Source§

impl HealthSource for CamelContext

Source§

fn liveness<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = HealthStatus> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn readiness<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = HealthStatus> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn health_report<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = HealthReport> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn startup<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = HealthStatus> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Default: Healthy — non-K8s implementors need not override.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> RuntimeObservability for T

Source§

fn metrics(&self) -> Arc<dyn MetricsCollector>

Active metrics collector. Used for increment_errors(route_id, label) per ADR-0012 categories (b′) and (e).
Source§

fn health(&self) -> Arc<dyn HealthCheckRegistry>

Active health-check registry. Used for force_unhealthy_for_route(route_id, name, reason) per ADR-0012 category (g).
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more