Skip to main content

camel_api/
lib.rs

1//! # rust-camel API
2//!
3//! Core Camel abstractions: exchanges, messages, body, errors, processors.
4//!
5//! Note: Component, Endpoint, Consumer, Producer traits are defined in
6//! `camel-component-api`. This crate focuses on data types and EIP abstractions.
7// TODO(API-006): Consider re-exporting Component, Endpoint, Consumer, Producer
8// from camel-component-api here for a unified API surface.
9
10pub mod aggregator;
11pub mod body;
12pub mod body_converter;
13pub mod circuit_breaker;
14pub mod data_format;
15pub mod declarative;
16pub mod delayer;
17pub mod dynamic_router;
18pub mod endpoint_pipeline;
19pub mod error;
20pub mod error_handler;
21pub mod exchange;
22pub mod filter;
23pub mod from_body;
24pub mod function;
25pub mod health;
26pub mod lifecycle;
27pub mod load_balancer;
28pub mod loop_eip;
29pub mod message;
30pub mod metrics;
31pub mod multicast;
32pub mod platform;
33pub mod processor;
34pub mod producer;
35pub mod recipient_list;
36pub mod route_controller;
37pub mod routing_slip;
38pub mod runtime;
39pub mod splitter;
40pub mod stream_cache;
41pub mod supervision;
42pub mod throttler;
43pub mod unit_of_work;
44pub mod value;
45pub mod xml_convert;
46
47// Re-export core types at crate root for convenience.
48pub use aggregator::{AggregationFn, AggregatorConfig, CompletionCondition};
49pub use body::{Body, BoxAsyncRead, StreamBody, StreamMetadata};
50pub use body_converter::{BodyType, convert as convert_body};
51pub use circuit_breaker::CircuitBreakerConfig;
52pub use data_format::DataFormat;
53pub use declarative::{LanguageExpressionDef, ValueSourceDef};
54pub use delayer::DelayConfig;
55pub use dynamic_router::{DynamicRouterConfig, RouterExpression};
56pub use endpoint_pipeline::{CAMEL_SLIP_ENDPOINT, EndpointPipelineConfig, EndpointResolver};
57pub use error::CamelError;
58pub use error_handler::{
59    ErrorHandlerConfig, ExceptionPolicy, ExceptionPolicyBuilder, HEADER_REDELIVERED,
60    HEADER_REDELIVERY_COUNTER, HEADER_REDELIVERY_MAX_COUNTER, RedeliveryPolicy,
61};
62// Backwards compatibility re-export (deprecated)
63#[allow(deprecated)]
64pub use error_handler::ExponentialBackoff;
65pub use exchange::{Exchange, ExchangePattern};
66pub use filter::FilterPredicate;
67pub use from_body::FromBody;
68pub use function::{
69    ExchangePatch, FunctionDefinition, FunctionDiff, FunctionId, FunctionInvocationError,
70    FunctionInvoker, FunctionInvokerSync, PatchBody,
71};
72pub use health::{HealthChecker, HealthReport, HealthSource, ServiceHealth};
73pub use lifecycle::{HealthStatus, Lifecycle, ServiceStatus};
74pub use load_balancer::{LoadBalanceStrategy, LoadBalancerConfig};
75pub use message::Message;
76pub use metrics::{MetricsCollector, NoOpMetrics};
77pub use multicast::{MulticastAggregationFn, MulticastConfig, MulticastStrategy};
78pub use platform::{
79    LeadershipEvent, LeadershipHandle, LeadershipService, NoopLeadershipService,
80    NoopPlatformService, NoopReadinessGate, PlatformError, PlatformIdentity, PlatformService,
81    ReadinessGate,
82};
83pub use processor::{
84    BoxProcessor, BoxProcessorExt, IdentityProcessor, Processor, ProcessorFn, SyncBoxProcessor,
85};
86pub use producer::ProducerContext;
87pub use route_controller::{RouteAction, RouteController, RouteStatus};
88pub use routing_slip::{RoutingSlipConfig, RoutingSlipExpression};
89pub use runtime::{
90    CANONICAL_CONTRACT_DECLARATIVE_ONLY_STEPS, CANONICAL_CONTRACT_EXCLUDED_DECLARATIVE_STEPS,
91    CANONICAL_CONTRACT_NAME, CANONICAL_CONTRACT_RUST_ONLY_STEPS,
92    CANONICAL_CONTRACT_SUPPORTED_STEPS, CANONICAL_CONTRACT_VERSION, CanonicalRouteSpec,
93    RuntimeCommand, RuntimeCommandBus, RuntimeCommandResult, RuntimeEvent, RuntimeHandle,
94    RuntimeQuery, RuntimeQueryBus, RuntimeQueryResult, canonical_contract_rejection_reason,
95    canonical_contract_supports_step,
96};
97pub use splitter::{
98    AggregationStrategy, SplitExpression, SplitterConfig, split_body, split_body_json_array,
99    split_body_lines,
100};
101pub use supervision::SupervisionConfig;
102pub use throttler::{ThrottleStrategy, ThrottlerConfig};
103pub use unit_of_work::UnitOfWorkConfig;
104pub use value::{Headers, Value};