pub enum BuilderStep {
Show 42 variants
Processor(BoxProcessor),
To(String),
Stop,
Log {
level: LogLevel,
message: String,
},
DeclarativeSetHeader {
key: String,
value: ValueSourceDef,
},
DeclarativeSetProperty {
key: String,
value_source: ValueSourceDef,
},
DeclarativeSetBody {
value: ValueSourceDef,
},
DeclarativeFilter {
predicate: LanguageExpressionDef,
steps: Vec<BuilderStep>,
},
DeclarativeChoice {
whens: Vec<DeclarativeWhenStep>,
otherwise: Option<Vec<BuilderStep>>,
},
DeclarativeScript {
expression: LanguageExpressionDef,
},
DeclarativeFunction {
definition: FunctionDefinition,
},
DeclarativeSplit {
expression: LanguageExpressionDef,
aggregation: AggregationStrategy,
parallel: bool,
parallel_limit: Option<usize>,
stop_on_exception: bool,
steps: Vec<BuilderStep>,
},
DeclarativeStreamSplit {
stream_config: StreamSplitConfig,
aggregation: AggregationStrategy,
stop_on_exception: bool,
steps: Vec<BuilderStep>,
},
DeclarativeDynamicRouter {
expression: LanguageExpressionDef,
uri_delimiter: String,
cache_size: i32,
ignore_invalid_endpoints: bool,
max_iterations: usize,
},
DeclarativeRoutingSlip {
expression: LanguageExpressionDef,
uri_delimiter: String,
cache_size: i32,
ignore_invalid_endpoints: bool,
},
Split {
config: SplitterConfig,
steps: Vec<BuilderStep>,
},
Aggregate {
config: AggregatorConfig,
},
Filter {
predicate: FilterPredicate,
steps: Vec<BuilderStep>,
},
Choice {
whens: Vec<WhenStep>,
otherwise: Option<Vec<BuilderStep>>,
},
WireTap {
uri: String,
},
Multicast {
steps: Vec<BuilderStep>,
config: MulticastConfig,
},
DeclarativeLog {
level: LogLevel,
message: ValueSourceDef,
},
Bean {
name: String,
method: String,
},
Script {
language: String,
script: String,
},
Throttle {
config: ThrottlerConfig,
steps: Vec<BuilderStep>,
},
LoadBalance {
config: LoadBalancerConfig,
steps: Vec<BuilderStep>,
},
DynamicRouter {
config: DynamicRouterConfig,
},
RoutingSlip {
config: RoutingSlipConfig,
},
RecipientList {
config: RecipientListConfig,
},
DeclarativeRecipientList {
expression: LanguageExpressionDef,
delimiter: String,
parallel: bool,
parallel_limit: Option<usize>,
stop_on_exception: bool,
aggregation: String,
},
Delay {
config: DelayConfig,
},
Loop {
config: LoopConfig,
steps: Vec<BuilderStep>,
},
DeclarativeLoop {
count: Option<usize>,
while_predicate: Option<LanguageExpressionDef>,
steps: Vec<BuilderStep>,
},
Enrich {
uri: String,
strategy: Option<String>,
timeout_ms: Option<u64>,
},
PollEnrich {
uri: String,
strategy: Option<String>,
timeout_ms: Option<u64>,
},
Validate {
predicate: LanguageExpressionDef,
},
ClaimCheck {
repository: String,
operation: String,
key: LanguageExpressionDef,
},
Sampling {
period: usize,
},
Sort {
expression: LanguageExpressionDef,
reverse: bool,
},
IdempotentConsumer {
repository: String,
expression: LanguageExpressionDef,
steps: Vec<BuilderStep>,
eager: bool,
remove_on_failure: bool,
},
DeclarativeDoTry {
try_steps: Vec<BuilderStep>,
catch: Vec<DoTryCatchClauseBuilder>,
finally: Option<DoTryFinallyBuilder>,
},
Resequence {
policy_config: ResequencePolicyConfig,
},
}Expand description
A step in an unresolved route definition.
Variants§
Processor(BoxProcessor)
A pre-built Tower processor service.
To(String)
A destination URI — resolved at start time by CamelContext.
Stop
A stop step that halts processing immediately.
Log
A static log step.
DeclarativeSetHeader
Declarative set_header (literal or language-based value), resolved at route-add time.
DeclarativeSetProperty
DeclarativeSetBody
Declarative set_body (literal or language-based value), resolved at route-add time.
Fields
value: ValueSourceDefDeclarativeFilter
Declarative filter using a language predicate, resolved at route-add time.
DeclarativeChoice
Declarative choice/when/otherwise using language predicates, resolved at route-add time.
DeclarativeScript
Declarative script step evaluated by language and written to body.
Fields
expression: LanguageExpressionDefDeclarativeFunction
Fields
definition: FunctionDefinitionDeclarativeSplit
Declarative split using a language expression, resolved at route-add time.
DeclarativeStreamSplit
Declarative stream split using a streaming split expression, resolved at route-add time.
DeclarativeDynamicRouter
Fields
expression: LanguageExpressionDefDeclarativeRoutingSlip
Fields
expression: LanguageExpressionDefSplit
A Splitter sub-pipeline: config + nested steps to execute per fragment.
Aggregate
An Aggregator step: collects exchanges by correlation key, emits when complete.
Fields
config: AggregatorConfigFilter
A Filter sub-pipeline: predicate + nested steps executed only when predicate is true.
Choice
A Choice step: evaluates when-clauses in order, routes to the first match. If no when matches, the optional otherwise branch is used.
WireTap
A WireTap step: sends a clone of the exchange to a tap endpoint (fire-and-forget).
Multicast
A Multicast step: sends the same exchange to multiple destinations.
DeclarativeLog
Declarative log step with a language-evaluated message, resolved at route-add time.
Bean
Bean invocation step — resolved at route-add time.
Script
Script step: executes a script that can mutate the exchange.
The script has access to headers, properties, and body.
Throttle
Throttle step: rate limiting with configurable behavior when limit exceeded.
LoadBalance
LoadBalance step: distributes exchanges across multiple endpoints using a strategy.
DynamicRouter
DynamicRouter step: routes exchanges dynamically based on expression evaluation.
Fields
config: DynamicRouterConfigRoutingSlip
Fields
config: RoutingSlipConfigRecipientList
Fields
config: RecipientListConfigDeclarativeRecipientList
Fields
expression: LanguageExpressionDefDelay
Fields
config: DelayConfigLoop
Runtime loop with closure-based predicate (programmatic DSL).
DeclarativeLoop
Declarative loop with optional language-based while predicate (YAML DSL).
Enrich
EIP-7 enrich: synchronous content enrichment via a resolved producer.
PollEnrich
EIP-7 pollEnrich: blocking poll of a PollingConsumer with timeout.
Validate
Validate step: evaluates a language expression as predicate. Exchange passes if predicate returns true; else CamelError::ValidationError.
Fields
predicate: LanguageExpressionDefClaimCheck
Claim Check step (EIP). Transforms the exchange body to/from a
ClaimCheckRepository by key. Process-mode, no child pipeline.
Sampling
Sampling step (EIP). Passes 1 of every N exchanges (counter-based, deterministic). Non-sampled exchanges get CamelStop=true (drop semantics). Process-mode, stateless. No StepLifecycle — counter is route-scoped.
Sort
Sort step (EIP). Orders a body array by extracting a sort key from each element via a language expression. Process-mode, stateless.
IdempotentConsumer
Idempotent Consumer step (EIP). Wraps a child sub-pipeline that runs
only when the message-id is NOT present in the named repository.
Compiled to a IdempotentConsumerSegment (OutcomePipeline, segment-mode).
DeclarativeDoTry
Declarative doTry/doCatch/doFinally, resolved at route-add time.
Fields
try_steps: Vec<BuilderStep>catch: Vec<DoTryCatchClauseBuilder>finally: Option<DoTryFinallyBuilder>Resequence
Resequencer EIP: resequences exchanges by sequence number. Must be a top-level step (not nested inside structural EIPs).
Fields
policy_config: ResequencePolicyConfig