首页 文章

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

提问于
浏览
0

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

direct:component在 生产环境 者发送消息交换时提供任何消费者的直接同步调用 .

我的问题:

  • 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

    在你的情况下是的,它应该并行运行不同的请求 .

    你可以创建一个测试它的Camel单元测试 . 在路由测试类中,您可以创建一个基于计时器的新路由,然后创建一个虚拟主体并调用您的路由 endpoints ,如下所示:

    .parallelProcessing().to("cxf1", "cxf2", "cxf3")
    

    然后观察结果 .

    我想另一种方法是使用JMeter并针对您的cxf endpoints 创建测试并观察 .

  • 1

    对于以与使用direct相同的方式处理并行请求,您可以使用"seda" . 详细信息在http://camel.apache.org/seda

  • 0

    它就像一个直接的方法调用,例如Foo foo = ...; foo.callSomeMethod()使用当前线程来调用 . 因此,在此示例CXF中,您与消费者并行,因此如果2个客户端同时调用CXF,则每个调用都在其自己的线程中运行,并且每个调用都直接调用直接方法调用,并且所有调用都可以并行运行 .

相关问题