首页 > 解决方案 > 使用拆分 EIP 进行并行处理时管理线程数

问题描述

我有一条简单的路线,每 5 分钟运行一次,如下所示:

from(testEndpoint).routeId("testRoute")
    .doTry()
        .log(this.message("Acquired lock starting processing."))
        .process(configProcessor)
        .choice()
            .when(body().isNotNull())
                .split(body())
                .parallelProcessing()
                .bean(parseConfig.class)
                .choice()
                .toD("${property.route}")
        .endChoice()
    .endDoTry()
.end();

该路由从数据库中获取配置并将其发送到另外两个正在侦听来自该路由的消息的路由。

为了使这条路线并行工作,我结合parallelProcessingsplit. 这工作正常,但每次路由运行时,此代码都会不断创建不同的线程,并在达到 33 个线程时停止。

线程池如下图所示:

在此处输入图像描述

如何管理线程数?我尝试添加超时,但这不起作用,线程陷入等待状态并且它们不会被杀死。

我无法更改默认线程池配置文件,因为代码中的其他地方需要该配置。有人可以指导我正确的方向吗?

标签: javamultithreadingapache-camelthreadpool

解决方案


推荐阅读