Skip to main content

Endpoint

Trait Endpoint 

Source
pub trait Endpoint: Send + Sync {
    // Required methods
    fn uri(&self) -> &str;
    fn create_consumer(
        &self,
        rt: Arc<dyn RuntimeObservability>,
    ) -> Result<Box<dyn Consumer>, CamelError>;
    fn create_producer(
        &self,
        rt: Arc<dyn RuntimeObservability>,
        ctx: &ProducerContext,
    ) -> Result<BoxProcessor, CamelError>;

    // Provided methods
    fn body_contract(&self) -> Option<BodyType> { ... }
    fn polling_consumer(&self) -> Option<Box<dyn PollingConsumer>> { ... }
}
Expand description

An Endpoint represents a source or destination in a route URI.

Required Methods§

Source

fn uri(&self) -> &str

The URI that identifies this endpoint.

Source

fn create_consumer( &self, rt: Arc<dyn RuntimeObservability>, ) -> Result<Box<dyn Consumer>, CamelError>

Create a consumer that reads from this endpoint.

rt provides narrow observability access (metrics() + health()) per ADR-0012 Phase A. Consumers store the Arc for later rt.metrics().increment_errors(...) / rt.health().force_unhealthy_for_route(...) calls (Phase B).

Source

fn create_producer( &self, rt: Arc<dyn RuntimeObservability>, ctx: &ProducerContext, ) -> Result<BoxProcessor, CamelError>

Create a producer that writes to this endpoint.

rt provides narrow observability access (metrics() + health()) per ADR-0012 Phase A. Producers store the Arc for later rt.health().force_unhealthy_for_route(...) calls on creation failure (Phase B category (g) sites).

Provided Methods§

Source

fn body_contract(&self) -> Option<BodyType>

Optional body type contract for the producer.

When Some(t), the pipeline will coerce the body to t before calling the producer. Default: None (accept any body variant, zero overhead).

Source

fn polling_consumer(&self) -> Option<Box<dyn PollingConsumer>>

Return a polling consumer for this endpoint, if supported.

Polling consumers use a pull model — callers invoke PollingConsumer::receive to retrieve the next message. Endpoints that only support push-based consumption should leave this default (returns None).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§