Spring Boot 在camel中配置streamCaching,Main

tktrz96b  于 2023-02-12  发布在  Spring
关注(0)|答案(1)|浏览(162)

我们有一个Camel路由的XML配置,其中包括这个bean,用于为大消息配置到磁盘的假脱机:

<streamCaching id="diskSpoolConfig" bufferSize="16384" spoolEnabled="true" spoolThreshold="10000000"/>

我想配置Camel,以便streamCaching自动使用磁盘假脱机,而不必在XML配置中指定它。

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

我找到了关于application.properties和set的文档

camel.main.streamCachingSpoolEnabled=true

但我不清楚这个文件需要驻留在JAR中的什么位置才能被读取。

Main main = new Main();
    main.addMainListener(new MainListenerSupport() {
        public void beforeConfigure(BaseMainSupport main) {
            CamelContext context = main.getCamelContext(); 
            context.setStreamCaching(true);
            context.getStreamCachingStrategy().setSpoolEnabled(true);
            context.getStreamCachingStrategy().setSpoolThreshold(10 * 1024 * 1024);
        }
    });
    main.setApplicationContextUri("file:routes.xml");
    main.run();

那也是无效的。也许它应用得太晚了?因为例如当我在beforeConfigure()中设置context.getShutdownStrategy().setTimeout(5);时,它会有效果。
如何启动启用了磁盘假脱机的Camel示例?

7vhp5slm

7vhp5slm1#

可以从多个配置文件中创建一个上下文,这样可以在jar内部进行预置,但从外部加载路径:

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
        "classpath:preset.xml",
        "file:routes.xml"
    );

    Main main = new Main();
    main.setApplicationContext(context);
    main.run();

相关问题