在我的Camel应用程序中,有2个CXF端点由相同的处理路由处理,而AFAIK每个端点可能会根据传入的HTTP请求并行生成Exchange。
两个端点都使用direct:
组件通过相同的路由转发请求,有时将其描述为调用方法的Camel等效项。
direct:组件在生产者发送消息交换时提供对任何消费者的直接同步调用。
我的问题:
direct:
组件并行运行不同的请求吗? (每个请求都有自己的Exchange,并由不同的java Thread
)这是我的情况:
<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>
答案 0 :(得分:1)
在你的情况下,它应该并行运行不同的请求。
你可以创建一个测试它的Camel单元测试。在路由测试类中,您可以创建一个基于计时器的新路由,然后创建一个虚拟主体并像这样调用路由端点:
.parallelProcessing().to("cxf1", "cxf2", "cxf3")
然后观察结果。
我想另一种方法是使用JMeter并针对你的cxf端点创建一个测试并观察。
答案 1 :(得分:0)
它的工作方式类似于直接方法调用,例如Foo foo = ...; foo.callSomeMethod()使用当前线程来调用。因此,在此示例CXF中,您与消费者并行,因此如果2个以上的客户端同时调用CXF,则每个调用都在其自己的线程中运行,并且每个调用都直接调用直接方法调用,并且所有调用都可以并行运行
答案 2 :(得分:0)
对于以与使用直接相同的方式处理并行请求,您可以使用&#34; seda&#34;代替。详情请见http://camel.apache.org/seda