Apache Camel:直接端点可以并行运行路由吗?

时间:2017-03-10 16:06:56

标签: apache-camel cxf

在我的Camel应用程序中,有2个CXF端点由相同的处理路由处理,而AFAIK每个端点可能会根据传入的HTTP请求并行生成Exchange。
两个端点都使用direct:组件通过相同的路由转发请求,有时将其描述为调用方法的Camel等效项。

  

direct:组件在生产者发送消息交换时提供对任何消费者的直接同步调用。

我的问题:

  • direct:组件并行运行不同的请求吗? (每个请求都有自己的Exchange,并由不同的java Thread
  • 执行
  • 如果没有,我该如何并行处理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 个答案:

答案 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