Skip to main content

RouteBuilder

Struct RouteBuilder 

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

A fluent builder for constructing routes.

§Example

let definition = RouteBuilder::from("timer:tick?period=1000")
    .set_header("source", Value::String("timer".into()))
    .filter(|ex| ex.input.body.as_text().is_some())
    .to("log:info?showHeaders=true")
    .build()?;

Implementations§

Source§

impl RouteBuilder

Source

pub fn from(endpoint: &str) -> Self

Start building a route from the given source endpoint URI.

Source

pub fn filter<F>(self, predicate: F) -> FilterBuilder
where F: Fn(&Exchange) -> bool + Send + Sync + 'static,

Open a filter scope. Only exchanges matching predicate will be processed by the steps inside the scope. Non-matching exchanges skip the scope entirely and continue to steps after .end_filter().

Source

pub fn choice(self) -> ChoiceBuilder

Open a choice scope for content-based routing.

Within the choice, you can define multiple .when() clauses and an optional .otherwise() clause. The first matching when predicate determines which sub-pipeline executes.

Source

pub fn wire_tap(self, endpoint: &str) -> Self

Add a WireTap step that sends a clone of the exchange to the given endpoint URI (fire-and-forget). The original exchange continues downstream unchanged.

Source

pub fn error_handler(self, config: ErrorHandlerConfig) -> Self

Set a per-route error handler. Overrides the global error handler on CamelContext.

Source

pub fn circuit_breaker(self, config: CircuitBreakerConfig) -> Self

Set a circuit breaker for this route.

Source

pub fn concurrent(self, max: usize) -> Self

Override the consumer’s default concurrency model.

When set, the pipeline spawns a task per exchange, processing them concurrently. max limits the number of simultaneously active pipeline executions (0 = unbounded, channel buffer is backpressure).

§Example
RouteBuilder::from("http://0.0.0.0:8080/api")
    .concurrent(16)  // max 16 in-flight pipeline executions
    .process(handle_request)
    .build()
Source

pub fn sequential(self) -> Self

Force sequential processing, overriding a concurrent-capable consumer.

Useful for HTTP routes that mutate shared state and need ordering guarantees.

Source

pub fn route_id(self, id: impl Into<String>) -> Self

Set the route ID for this route.

If not set, the route will be assigned an auto-generated ID.

Source

pub fn auto_startup(self, auto: bool) -> Self

Set whether this route should automatically start when the context starts.

Default is true.

Source

pub fn startup_order(self, order: i32) -> Self

Set the startup order for this route.

Routes with lower values start first. Default is 1000.

Source

pub fn split(self, config: SplitterConfig) -> SplitBuilder

Begin a Splitter sub-pipeline. Steps added after this call (until .end_split()) will be executed per-fragment.

Returns a SplitBuilder — you cannot call .build() until .end_split() closes the split scope (enforced by the type system).

Source

pub fn multicast(self) -> MulticastBuilder

Begin a Multicast sub-pipeline. Steps added after this call (until .end_multicast()) will each receive a copy of the exchange.

Returns a MulticastBuilder — you cannot call .build() until .end_multicast() closes the multicast scope (enforced by the type system).

Source

pub fn build(self) -> Result<RouteDefinition, CamelError>

Consume the builder and produce a RouteDefinition.

Trait Implementations§

Source§

impl StepAccumulator for RouteBuilder

Source§

fn steps_mut(&mut self) -> &mut Vec<BuilderStep>

Source§

fn to(self, endpoint: impl Into<String>) -> Self

Source§

fn process<F, Fut>(self, f: F) -> Self
where F: Fn(Exchange) -> Fut + Send + Sync + 'static, Fut: Future<Output = Result<Exchange, CamelError>> + Send + 'static,

Source§

fn process_fn(self, processor: BoxProcessor) -> Self

Source§

fn set_header(self, key: impl Into<String>, value: impl Into<Value>) -> Self

Source§

fn map_body<F>(self, mapper: F) -> Self
where F: Fn(Body) -> Body + Clone + Send + Sync + 'static,

Source§

fn set_body<B>(self, body: B) -> Self
where B: Into<Body> + Clone + Send + Sync + 'static,

Source§

fn set_body_fn<F>(self, expr: F) -> Self
where F: Fn(&Exchange) -> Body + Clone + Send + Sync + 'static,

Source§

fn set_header_fn<F>(self, key: impl Into<String>, expr: F) -> Self
where F: Fn(&Exchange) -> Value + Clone + Send + Sync + 'static,

Source§

fn aggregate(self, config: AggregatorConfig) -> Self

Source§

fn stop(self) -> Self

Stop processing this exchange immediately. No further steps in the current pipeline will run. Read more
Source§

fn log(self, message: impl Into<String>, level: LogLevel) -> Self

Log a message at the specified level. Read more
Source§

fn convert_body_to(self, target: BodyType) -> Self

Convert the message body to the target type. Read more

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<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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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