当前位置: 首页 > 知识库问答 >
问题:

Camel Context上的线程池配置

云承弼
2023-03-14

我创建了多个camelContext,并希望每个camelContext使用自己的自定义线程池。但是,日志显示我所有的camelContext都使用同一个线程池。我错过了什么?

主要背景

<camelContext id="routeLoader_route">
    (no threadpool defined)

    <route id="RouteCreator" >
        <from uri="file://jsonFilePath" />
        <bean ref="routeMonitor" method="loadJsontoCreateRoute" />
    </route>

    (some other routes defined)
</camelContext>

“loadJsontoCreateRoute”方法将读取三个json文件,然后创建三条连接路径

  1. 终点“file://xxx1/out“到endpoint”直接vm:out。测试“
  2. 终点“file://xxx2/out“到endpoint”直接vm:out。测试“
  3. 终点“file://xxx3/out“到endpoint”直接vm:out。测试“

另一个骆驼的背景

<camelContext id="test_out_route">
    <threadPoolProfile id="outTestThreadPoolProfile" defaultProfile="true" poolSize="1" maxPoolSize="1" maxQueueSize="1000"  rejectedPolicy="CallerRuns"/>

    <route id="outboundTestingRouter">
        <from uri="direct-vm:out.test"/>
        <doTry>
            <log message="Outbound Test -- START" loggingLevel="INFO" />
            <recipientList>
                <method ref="outTestBean" method="dynamicRoute" />
            </recipientList>
        <doFinally>
            <log message="Outbound Test-- END" loggingLevel="INFO" />
            <stop/>
        </doFinally>
        </doTry>
    </route>

    (Some other routes defined)
</camelContext>

dynamicRoute方法将返回ftp组件的uri

日志

20160623 09:48:04.297 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.524 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.526 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.527 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.634 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.636 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.652 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.653 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.749 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.749 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.827 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.827 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.890 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.937 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:04.937 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:04.999 [Camel (routeLoader_route) thread #24 - file://xxx3/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:05.140 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:05.358 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:05.358 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:05.469 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:05.471 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:05.593 [Camel (routeLoader_route) thread #5 - file://xxx1/out] INFO outboundTestingRouter  - Outbound Test -- END
20160623 09:48:05.905 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- START
20160623 09:48:05.999 [Camel (routeLoader_route) thread #17 - file://xxx2/out] INFO outboundTestingRouter  - Outbound Test -- END

日志的第3行到第10行显示,有多个outboundTestingRouter路由同时运行,而我的threadpool outTestThreadPoolProfile池大小限制为1

这表示outboundTestingRouter路由未使用threadpool outTestThreadPoolProfile

我想要的是限制route outboundTestingRouter的最大并发使用次数。

共有1个答案

阎修杰
2023-03-14

嗯,看起来应该有用。日志声明说你没有使用你的线程池,那怎么办?

需要注意的事情:

1) 你的路线需要利用一个线程池来利用默认模板。

2) 通常,您可以手动将线程池分配给组件,其语法类似于:executorServiceRef=“outTestThreadPoolProfile”,但请确保查看组件的文档

3)如果您的默认线程池配置文件不起作用,您可以简单地使用标准ThreadPool标记来创建一个可以直接分配给组件的隔离线程池。

 类似资料:
  • 我不确定的是,在这种情况下,会创建多少个线程?我在一台2核心的机器上运行,所以每核心24个线程,最多48个线程? 当并行度因子设置为4.0时,可以并行运行的线程数将是8。那么,设置最小值和最大值(我的例子是24和48)的需要是什么?

  • 接收到数据时回调此函数,发生在worker进程中。函数原型: function onReceive(swoole_server $server, int $fd, int $reactor_id, string $data); $server,swoole_server对象 $fd,TCP客户端连接的唯一标识符 $reactor_id,TCP连接所在的Reactor线程ID $data,收到的数

  • 主要内容:一、MySql中的线程,二、主要方式,三、源码流程,四、总结一、MySql中的线程 在mysql中,每一个连接上来,就会分配给一个相关的THD数据类。在前面的分析中可以看到,连接器(Connectors)连接到的直接就是连接池,在连接池的线程处理中分为三部分,即一对一(一个连接对应一个线程),多对一(多个连接对应一个线程)和线程池(多对多)。 线程池和线程可以针对不同的具体场景来处理具体的事务,这样既兼顾了效率又提高了适应性,对于新手来说,这就是设计的一个

  • 本文向大家介绍Spring Boot中配置定时任务、线程池与多线程池执行的方法,包括了Spring Boot中配置定时任务、线程池与多线程池执行的方法的使用技巧和注意事项,需要的朋友参考一下 配置基础的定时任务 最基本的配置方法,而且这样配置定时任务是单线程串行执行的,也就是说每次只能有一个定时任务可以执行,可以试着声明两个方法,在方法内写一个死循环,会发现一直卡在一个任务上不动,另一个也没有执行

  • 主要内容:1 什么是Java 线程池,2 Java 线程池的优势,3 Java 线程池的应用场景,4 Java 线程池的例子1 什么是Java 线程池 Java线程池 表示一组正在等待作业并多次重复使用的工作线程。 如果是线程池,则会创建一组固定大小的线程。服务提供商从线程池中拉出一个线程并为其分配作业。作业完成后,线程再次包含在线程池中。 2 Java 线程池的优势 由于无需创建新线程,因此拥有更好的性能,可以节省时间。 3 Java 线程池的应用场景 在用户请求Servlet和JSP时,其中

  • 当servlet从线程池中重用线程时,一旦它们返回到线程池,它们所持有的所有引用会发生什么?它们是否以某种方式设置为空?有什么想法吗?