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    ErrorHandlerConfig, ExceptionPolicy, ExceptionPolicyBuilder, HEADER_REDELIVERED,
68    HEADER_REDELIVERY_COUNTER, HEADER_REDELIVERY_MAX_COUNTER, RedeliveryPolicy,
69};
70pub use security_policy::{
71    AuthorizationDecision, PRINCIPAL_AUDIENCE_KEY, PRINCIPAL_CLAIMS_KEY, PRINCIPAL_ISSUER_KEY,
72    PRINCIPAL_KEY, PRINCIPAL_ROLES_KEY, PRINCIPAL_SCOPES_KEY, PRINCIPAL_SUBJECT_KEY, Principal,
73    SecurityPolicy, SecurityPolicyConfig, store_principal_properties,
74};
75// Backwards compatibility re-export (deprecated)
76#[allow(deprecated)]
77pub use error_handler::ExponentialBackoff;
78pub use exchange::{Exchange, ExchangePattern};
79pub use filter::FilterPredicate;
80pub use from_body::FromBody;
81pub use function::{
82    ExchangePatch, FunctionDefinition, FunctionDiff, FunctionId, FunctionInvocationError,
83    FunctionInvoker, FunctionInvokerSync, PatchBody,
84};
85pub use health::{AsyncHealthCheck, CheckResult, HealthReport, HealthSource, ServiceHealth};
86pub use lifecycle::{HealthStatus, Lifecycle, ServiceStatus};
87pub use load_balancer::{LoadBalanceStrategy, LoadBalancerConfig};
88pub use message::Message;
89pub use metrics::{MetricsCollector, NoOpMetrics};
90pub use multicast::{MulticastAggregationFn, MulticastConfig, MulticastStrategy};
91pub use platform::{
92    LeadershipEvent, LeadershipHandle, LeadershipService, NoopLeadershipService,
93    NoopPlatformService, NoopReadinessGate, PlatformError, PlatformIdentity, PlatformService,
94    ReadinessGate,
95};
96pub use processor::{
97    BoxProcessor, BoxProcessorExt, IdentityProcessor, Processor, ProcessorFn, SyncBoxProcessor,
98};
99pub use producer::ProducerContext;
100pub use route_controller::{RouteAction, RouteController, RouteStatus};
101pub use routing_slip::{RoutingSlipConfig, RoutingSlipExpression};
102pub use runtime::{
103    CANONICAL_CONTRACT_DECLARATIVE_ONLY_STEPS, CANONICAL_CONTRACT_EXCLUDED_DECLARATIVE_STEPS,
104    CANONICAL_CONTRACT_NAME, CANONICAL_CONTRACT_RUST_ONLY_STEPS,
105    CANONICAL_CONTRACT_SUPPORTED_STEPS, CANONICAL_CONTRACT_VERSION, CanonicalConcurrencySpec,
106    CanonicalFieldLoss, CanonicalLossReport, CanonicalRouteSpec, RuntimeCommand, RuntimeCommandBus,
107    RuntimeCommandResult, RuntimeEvent, RuntimeHandle, RuntimeQuery, RuntimeQueryBus,
108    RuntimeQueryResult, canonical_contract_rejection_reason, canonical_contract_supports_step,
109};
110pub use splitter::{
111    AggregationStrategy, SplitExpression, SplitterConfig, StreamSplitConfig, StreamSplitFormat,
112    StreamingSplitExpression, fragment_exchange, split_body, split_body_json_array,
113    split_body_lines,
114};
115pub use supervision::SupervisionConfig;
116pub use throttler::{ThrottleStrategy, ThrottlerConfig};
117pub use unit_of_work::UnitOfWorkConfig;
118pub use value::{Headers, Value};
119
120// Template types
121pub use template::{
122    RouteTemplateSpec, TemplateError, TemplateInstanceRecord, TemplateParameterSpec,
123    TemplatedRouteSpec,
124};