设计路线的最佳方式是什么?有多条路线好吗?

时间:2017-05-25 10:33:56

标签: routes apache-camel jbossfuse

我正在使用JBoss Fuse,如果我有多条路线或一条路线,我很困惑。假设我们有两个条件,我们将根据条件执行不同的操作。例如

<camelContext>
<route>
<choice>
<onWhen>
<simple>${property.name} == 'foo'</simple>
....do something
</onWhen>
<onWhen>
<simple>${property.name} == 'bar'</simple>
...do something
</onWhen>
</route>
</camelContext>

1 个答案:

答案 0 :(得分:1)

这类问题没有一个有效的答案,因为它很大程度上取决于你的申请。一般来说,使用较小的路径可以轻松测试您的应用程序并重用逻辑。

你可以像这样重构你的路线

<camelContext>
    <route>
        <!-- route starts somehow -->
        <choice>
            <onWhen>
                <simple>${property.name} == 'foo'</simple>
                <to uri="direct:handleFoo" />
            </onWhen>
            <onWhen>
                <simple>${property.name} == 'bar'</simple>
                <to uri="direct:handleBar" />
            </onWhen>
        </choice>
    </route>

    <route id="ThisRouteWillHandleFooCase">
        <from uri="direct:handleFoo" />
        <to uri="..." />
        <!-- do stuff for foo here -->
    </route>

    <route id="ThisOtherRouteIsForBarCase">
        <from uri="direct:handleBar" />
        <to uri="..." />
        <!-- do stuff for bar here" -->
    </route>

</camelContext>

direct:组件使其像调用Java方法一样,它是对另一条路由的直接和同步调用。现在,您可以轻松测试 foo 的行为以及 bar 的行为。

现在想象一下,您需要经常更新数据库或进行Web服务调用:最好有一条路由来完成这项工作并多次调用它。