编程语言
首页 > 编程语言> > 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.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文档中了解有关此内容的更多信息:http://camel.apache.org/threading-model.html

标签:apache-camel,java
来源: https://codeday.me/bug/20191120/2040646.html