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 backoff;
12pub mod body;
13pub mod body_converter;
14pub mod circuit_breaker;
15pub mod data_format;
16pub mod datasource;
17pub mod declarative;
18pub mod delayer;
19pub mod dynamic_router;
20pub mod endpoint_pipeline;
21pub mod error;
22pub mod error_handler;
23pub mod exchange;
24pub mod filter;
25pub mod from_body;
26pub mod function;
27pub mod health;
28pub mod lifecycle;
29pub mod load_balancer;
30pub mod loop_eip;
31pub mod message;
32pub mod metrics;
33pub mod multicast;
34pub mod platform;
35pub mod processor;
36pub mod producer;
37pub mod recipient_list;
38pub mod route_controller;
39pub mod routing_slip;
40pub mod runtime;
41pub mod security_policy;
42pub mod splitter;
43pub mod stream_cache;
44pub mod supervision;
45pub mod template;
46pub mod throttler;
47pub mod unit_of_work;
48pub mod value;
49pub mod xml_convert;
50
51// Re-export core types at crate root for convenience.
52pub use aggregator::{AggregationFn, AggregatorConfig, CompletionCondition};
53pub use backoff::{BackoffConfig, BackoffState};
54pub use body::{Body, BoxAsyncRead, StreamBody, StreamMetadata};
55pub use body_converter::{BodyType, convert as convert_body};
56pub use circuit_breaker::CircuitBreakerConfig;
57pub use data_format::DataFormat;
58pub use datasource::{
59    DatasourceCatalog, DatasourceConfig, DatasourceHandle, PoolFactory, ResourceRef,
60};
61pub use declarative::{LanguageExpressionDef, ValueSourceDef};
62pub use delayer::DelayConfig;
63pub use dynamic_router::{DynamicRouterConfig, RouterExpression};
64pub use endpoint_pipeline::{CAMEL_SLIP_ENDPOINT, EndpointPipelineConfig, EndpointResolver};
65pub use error::CamelError;
66pub use error_handler::{
67    BoundaryKind, ErrorHandlerConfig, ExceptionDisposition, ExceptionPolicy,
68    ExceptionPolicyBuilder, HEADER_REDELIVERED, HEADER_REDELIVERY_COUNTER,
69    HEADER_REDELIVERY_MAX_COUNTER, PolicyId, RedeliveryPolicy, RetryOutcome, StepDisposition,
70};
71pub use security_policy::{
72    AuthorizationDecision, PRINCIPAL_AUDIENCE_KEY, PRINCIPAL_CLAIMS_KEY, PRINCIPAL_ISSUER_KEY,
73    PRINCIPAL_KEY, PRINCIPAL_ROLES_KEY, PRINCIPAL_SCOPES_KEY, PRINCIPAL_SUBJECT_KEY, Principal,
74    SecurityPolicy, SecurityPolicyConfig, store_principal_properties,
75};
76// Backwards compatibility re-export (deprecated)
77#[allow(deprecated)]
78pub use error_handler::ExponentialBackoff;
79pub use exchange::{Exchange, ExchangePattern};
80pub use filter::FilterPredicate;
81pub use from_body::FromBody;
82pub use function::{
83    ExchangePatch, FunctionDefinition, FunctionDiff, FunctionId, FunctionInvocationError,
84    FunctionInvoker, FunctionInvokerSync, PatchBody,
85};
86pub use health::{AsyncHealthCheck, CheckResult, HealthReport, HealthSource, ServiceHealth};
87pub use lifecycle::{HealthStatus, Lifecycle, ServiceStatus};
88pub use load_balancer::{LoadBalanceStrategy, LoadBalancerConfig};
89pub use message::Message;
90pub use metrics::{MetricsCollector, NoOpMetrics};
91pub use multicast::{MulticastAggregationFn, MulticastConfig, MulticastStrategy};
92pub use platform::{
93    LeadershipEvent, LeadershipHandle, LeadershipService, NoopLeadershipService,
94    NoopPlatformService, NoopReadinessGate, PlatformError, PlatformIdentity, PlatformService,
95    ReadinessGate,
96};
97pub use processor::{
98    BoxProcessor, BoxProcessorExt, IdentityProcessor, Processor, ProcessorFn, SyncBoxProcessor,
99};
100pub use producer::ProducerContext;
101pub use route_controller::{RouteAction, RouteController, RouteStatus};
102pub use routing_slip::{RoutingSlipConfig, RoutingSlipExpression};
103pub use runtime::{
104    CANONICAL_CONTRACT_DECLARATIVE_ONLY_STEPS, CANONICAL_CONTRACT_EXCLUDED_DECLARATIVE_STEPS,
105    CANONICAL_CONTRACT_NAME, CANONICAL_CONTRACT_RUST_ONLY_STEPS,
106    CANONICAL_CONTRACT_SUPPORTED_STEPS, CANONICAL_CONTRACT_VERSION, CanonicalConcurrencySpec,
107    CanonicalFieldLoss, CanonicalLossReport, CanonicalRouteSpec, RuntimeCommand, RuntimeCommandBus,
108    RuntimeCommandResult, RuntimeEvent, RuntimeHandle, RuntimeQuery, RuntimeQueryBus,
109    RuntimeQueryResult, canonical_contract_rejection_reason, canonical_contract_supports_step,
110};
111pub use splitter::{
112    AggregationStrategy, SplitExpression, SplitterConfig, StreamSplitConfig, StreamSplitFormat,
113    StreamingSplitExpression, fragment_exchange, split_body, split_body_json_array,
114    split_body_lines,
115};
116pub use supervision::SupervisionConfig;
117pub use throttler::{ThrottleStrategy, ThrottlerConfig};
118pub use unit_of_work::UnitOfWorkConfig;
119pub use value::{Headers, Value};
120
121// Template types
122pub use template::{
123    RouteTemplateSpec, TemplateError, TemplateInstanceRecord, TemplateParameterSpec,
124    TemplatedRouteSpec,
125};