Java apachecamel中split上的并行处理线程

Java apachecamel中split上的并行处理线程,java,apache-camel,Java,Apache Camel,我正试图根据某种逻辑在路由中拆分传入的交换机。每个分割的部分都将连接到bean中的ssh服务器 from("seda:compression") .routeId("Compressor") .split(beanExpression(new InstanceListParser(), "process")) .parallelProcessing() .to("bean:compressorClient?method=compress(${header.

我正试图根据某种逻辑在路由中拆分传入的交换机。每个分割的部分都将连接到bean中的ssh服务器

from("seda:compression")
    .routeId("Compressor")
    .split(beanExpression(new InstanceListParser(), "process"))
    .parallelProcessing()
        .to("bean:compressorClient?method=compress(${header.remoteHost},${header.dataCenter})")
    .end();
但似乎最多有10个进程并行运行

我添加了以下代码以增加线程池工厂的大小,但这没有帮助

ThreadPoolProfile poolProfile = new ThreadPoolProfile("masterPoolProfile");
poolProfile.setMaxPoolSize(100);
poolProfile.setMaxQueueSize(100);
poolProfile.setPoolSize(50);
poolProfile.setKeepAliveTime(1L);
poolProfile.setTimeUnit(TimeUnit.MINUTES);

ThreadPoolFactory poolFactory = new DefaultThreadPoolFactory();
poolFactory.newThreadPool(poolProfile, Executors.defaultThreadFactory());

getContext().getExecutorServiceManager().setThreadPoolFactory(poolFactory);

您需要将拆分器配置为使用
masterPoolProfile
作为线程池,或者将
masterPoolProfile
配置为默认配置文件。后者意味着在Camel中使用该API创建的所有线程池都将使用此配置文件作为基线

在Camel文档中了解更多信息:

这对我很有用:

ThreadPoolProfile poolProfile = new ThreadPoolProfile("masterPoolProfile");
poolProfile.setMaxPoolSize(100);
poolProfile.setMaxQueueSize(100);
poolProfile.setPoolSize(50);
poolProfile.setKeepAliveTime(1L);
poolProfile.setTimeUnit(TimeUnit.MINUTES);
getContext().getExecutorServiceManager().setDefaultThreadPoolProfile(poolProfile)