gpt4 book ai didi

apache-camel - camel-cxf 消费者是多线程的吗?如何检查组件是否使用多线程?

转载 作者:行者123 更新时间:2023-12-02 03:10:17 24 4
gpt4 key购买 nike

我们在项目中使用 camel-cxf 作为消费者 (soap),并问自己 camel-cxf 是否使用多线程来响应请求。我们认为它使用了多个线程,对吧?!但这对路线的其余部分意味着什么? “from”之后是全多线程还是有同步点?

这对“parallelProcessing”或“threads”意味着什么?

在我们的例子中,我们稍后在路由中使用 jdbc 组件。 camel-jdbc 也使用多线程吗?

如何大致了解给定组件使用的线程模型?

最佳答案

让我们从您的最后一个问题开始:

How to know in general what threading model is used by a given component?

您可能会问哪些组件默认是单线程的,哪些是多线程的?

您需要问问自己哪种方法对组件最有意义,并阅读组件的文档。通常,标志会告诉您默认应用什么行为。 CXF 是一个需要 Web 服务器(在本例中为码头)的组件,以便 SOAP(通过 HTTP)客户端能够调用服务。 HTTP 是一种无状态协议(protocol),Web 服务器必须扩展到许多客户端,因此 Web 服务器是多线程的很有意义。所以是的,对 CXF 端点的两个同时请求由两个单独的(码头)线程处理。从 CXF 端点开始的路由由接收请求的码头线程同时执行。

相反,如果您正在轮询文件系统更改,例如您想检查某个文件是否已创建,将多个线程应用于轮询任务是没有意义的。因此 file 消费者是单线程的。 file 消费者用来进行轮询的线程也将执行您的路由,该路由处理在轮询期间拾取的文件。

如果处理由轮询识别的文件与轮询间隔相比需要很长时间,并且您不能错过轮询,那么您需要将其余路由的处理交给另一个线程,以便您的轮询线程再次可以自由地进行轮询。输入 Threads DSL .

然后你有像 splitter 这样的处理器,它从一个任务中创建许多任务。为了使拆分器为每个人工作,必须假设拆分器创建的任务不能乱序执行和/或彼此完全独立。因此,安全的默认设置是在执行整个路由的线程中运行拆分步骤包装的步骤。但是,如果您作为路由作者知道各个拆分项目可以相互独立地处理,那么您可以通过设置 parallelProcessing="true" 来并行处理拆分步骤包装的步骤。

线程 DSL 和使用 parallelProcessing="true" 都从线程池获取线程。 Camel 为您创建一个游泳池。但是如果你想使用多个池或一个具有不同配置的池,那么你总是可以 supply your own .

关于apache-camel - camel-cxf 消费者是多线程的吗?如何检查组件是否使用多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40375360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com