在我的Camel应用程序中,有2个CXF endpoints 由相同的处理路由处理,并且AFAIK每个 endpoints 可以根据传入的HTTP请求并行生成Exchange .
两个 endpoints 都使用 direct:
组件通过相同的路由转发请求,有时将其描述为调用方法的Camel等效项 .
direct:component在 生产环境 者发送消息交换时提供任何消费者的直接同步调用 .
我的问题:
-
direct:
组件并行运行不同的请求吗? (每个请求都有自己的Exchange,并由不同的javaThread
执行) -
如果没有,我如何并行处理CXF请求?
这是我的情况:
<route id="CxfRoute1">
<from uri="cxf:bean:endpoint1" />
<to uri="direct:handle" />
</route>
<route id="CxfRoute2">
<from uri="cxf:bean:endpoint2" />
<to uri="direct:handle" />
</route>
<route id="HandleStuffRoute" />
<from uri="direct:handle" />
<to uri="bean:stuffHandler" />
</route>
3 回答
在你的情况下是的,它应该并行运行不同的请求 .
你可以创建一个测试它的Camel单元测试 . 在路由测试类中,您可以创建一个基于计时器的新路由,然后创建一个虚拟主体并调用您的路由 endpoints ,如下所示:
然后观察结果 .
我想另一种方法是使用JMeter并针对您的cxf endpoints 创建测试并观察 .
对于以与使用direct相同的方式处理并行请求,您可以使用"seda" . 详细信息在http://camel.apache.org/seda
它就像一个直接的方法调用,例如Foo foo = ...; foo.callSomeMethod()使用当前线程来调用 . 因此,在此示例CXF中,您与消费者并行,因此如果2个客户端同时调用CXF,则每个调用都在其自己的线程中运行,并且每个调用都直接调用直接方法调用,并且所有调用都可以并行运行 .