You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Camel Main中配置自动磁盘缓存的StreamCaching?

配置Camel StreamCaching磁盘暂存的可行方案

方案一:通过application.properties配置

  • 文件存放路径:将application.properties放在项目的src/main/resources目录下(Maven/Gradle标准结构),打包后该文件会被放入JAR包的根路径,Camel Main启动时会自动加载这个配置文件。
  • 完整配置参数:
camel.main.streamCachingEnabled=true
camel.main.streamCachingSpoolEnabled=true
# 10MB阈值,对应10*1024*1024
camel.main.streamCachingSpoolThreshold=10485760
camel.main.streamCachingBufferSize=16384

方案二:代码层面正确配置

你之前的代码失效是因为beforeConfigure阶段的CamelContext尚未完成初始化,无法正确应用StreamCaching策略。可以通过以下两种方式修正:

方式A:直接通过Main的配置对象设置

Main main = new Main();
MainConfigurationProperties config = main.getConfiguration();

// 启用StreamCaching并配置磁盘暂存参数
config.setStreamCachingEnabled(true);
config.setStreamCachingSpoolEnabled(true);
config.setStreamCachingSpoolThreshold(10 * 1024 * 1024);
config.setStreamCachingBufferSize(16384);

main.setApplicationContextUri("file:routes.xml");
main.run();

方式B:使用MainListener的afterConfigure方法

Main main = new Main();
main.addMainListener(new MainListenerSupport() {
    @Override
    public void afterConfigure(BaseMainSupport main) {
        CamelContext context = main.getCamelContext();
        StreamCachingStrategy strategy = context.getStreamCachingStrategy();
        
        strategy.setSpoolEnabled(true);
        strategy.setSpoolThreshold(10 * 1024 * 1024);
        strategy.setBufferSize(16384);
        context.setStreamCaching(true);
    }
});

main.setApplicationContextUri("file:routes.xml");
main.run();

验证配置生效

启动Camel后,查看日志是否包含StreamCaching is enabled with spooling to disk相关内容,即可确认磁盘暂存功能已生效;也可以在路由中通过exchange.getStreamCachingStrategy()获取策略对象,打印参数验证配置。

内容的提问来源于stack exchange,提问作者sba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:10:22