pub struct FileConfig {Show 16 fields
pub directory: String,
pub delay: Duration,
pub initial_delay: Duration,
pub noop: bool,
pub delete: bool,
pub move_to: Option<String>,
pub file_name: Option<String>,
pub include: Option<String>,
pub exclude: Option<String>,
pub recursive: bool,
pub file_exist: FileExistStrategy,
pub temp_prefix: Option<String>,
pub auto_create: bool,
pub read_timeout: Duration,
pub write_timeout: Duration,
pub max_body_size: usize,
}Expand description
Configuration for file component endpoints.
§Memory Limits and Stream Materialization
The file component uses a 100MB default memory limit for stream materialization
(configurable via max_body_size). This limit applies when the file producer needs to
materialize a stream body into bytes for writing to disk.
§Why This Limit?
This limit is designed for batch file processing scenarios with trusted input:
- Processing moderate-sized files in batch jobs
- Enterprise integration patterns with controlled file sizes
- Scenarios where files are generated by trusted sources
The 100MB default balances memory safety with practical file processing needs in typical integration scenarios.
§Overriding the Limit
Adjust the limit via the maxBodySize URI parameter (in bytes):
file:/data/output?maxBodySize=524288000 // 500MB
file:/data/output?maxBodySize=1048576 // 1MB§Behavior When Exceeded
When a file exceeds the configured max_body_size:
- The producer returns a
CamelError::ProcessorError - The exchange fails without writing partial data
- No memory is exhausted - the check happens before full materialization
§Large Files and Lazy Evaluation
Important: The file consumer uses lazy stream evaluation, allowing it to handle files of any size (including multi-gigabyte files) without loading them entirely into memory. Files are streamed chunk-by-chunk as the exchange flows through the route.
The memory limit only applies when:
- A downstream processor requires the full body (e.g.,
.into_bytes()) - The producer needs to write the body to a file
For large file scenarios, consider:
- Keeping the body as a stream throughout the route
- Using streaming processors that don’t require full materialization
- Adjusting
max_body_sizeonly when you control the input sources
Fields§
§directory: String§delay: Duration§initial_delay: Duration§noop: bool§delete: bool§move_to: Option<String>§file_name: Option<String>§include: Option<String>§exclude: Option<String>§recursive: bool§file_exist: FileExistStrategy§temp_prefix: Option<String>§auto_create: bool§read_timeout: Duration§write_timeout: Duration§max_body_size: usizeImplementations§
Source§impl FileConfig
impl FileConfig
pub fn from_uri(uri: &str) -> Result<Self, CamelError>
Trait Implementations§
Source§impl Clone for FileConfig
impl Clone for FileConfig
Source§fn clone(&self) -> FileConfig
fn clone(&self) -> FileConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more