Apache camel 在驼峰上下文中前一个完成后调用路由

Apache camel 在驼峰上下文中前一个完成后调用路由,apache-camel,Apache Camel,我正在使用blueprint编写一个camel应用程序。我有两个路由,它们调用相同的类bean,但用于基于路由id的类中处理的不同案例。我只想在第一个路由完成其执行时启动第二个路由,而不是并行执行。那么有没有办法做到这一点。下面是我的代码- <camelContext id="test" xmlns="http://camel.apache.org/schema/blueprint"> <route id="1"> <from

我正在使用blueprint编写一个camel应用程序。我有两个路由,它们调用相同的类bean,但用于基于路由id的类中处理的不同案例。我只想在第一个路由完成其执行时启动第二个路由,而不是并行执行。那么有没有办法做到这一点。下面是我的代码-

<camelContext id="test"
        xmlns="http://camel.apache.org/schema/blueprint">
    <route id="1">
        <from uri="timer"/>
        <to uri="bean:test"/>
    </route>
    <route id="2">
       <from uri="timer"/>
       <to uri="bean:test"/>  
    </route>
</camelContext>

谢谢

当骆驼上下文启动时,路由将启动。您可能正在寻找由route1处理后路由到route2的交换

听起来是同一条路线。在实现不同的行为时,您有一些重用bean的选项。最简单的方法是使用不同的方法:

class TestBean {
    void test1(){}
    void test2(){}
}
然后更改路线配置:

<route id="1">
    <from uri="timer"/>
    <to uri="bean:test?method=test1"/>
    <to uri="bean:test?method=test2"/>  
</route>

当然,您可以更改这些不同的bean…

为什么不在同一个bean上使用不同的方法?@ErnestKiwele-谢谢您的回复。但是,由于应用程序非常复杂,因此我必须进行很多更改。因此,您能否建议一种方法,只有在路线1完成后才能启动路线2。从路线1到路线2的概念是交换级别。两条路由都必须启动,exchange才能通过它们。您正在寻找不同的模式,而不是不同的路线或路线结构。