该DirectComponent文档给出了下面的例子:
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("direct:processOrder");
from("direct:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
Run Code Online (Sandbox Code Playgroud)
这和下面有什么区别吗?
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
Run Code Online (Sandbox Code Playgroud)
我试图找到关于to()方法在Java DSL上的行为的文档,但是除了RouteDefinition javadoc之外(它给出了非常简单的"将交换发送到给定的端点")我发现空白:(
Pet*_*der 18
在上面的例子中,你不会注意到太大的区别."直接"组件非常类似于方法调用.
一旦开始构建更复杂的路由,您将需要出于多种原因将它们分成几个不同的部分.
例如,您可以创建可以在Camel上下文中的多个路由之间重用的"子路由".就像你在常规编程中细分方法一样,以允许可重用性并使代码更清晰.对于使用例如直接分量的子路由也是如此.
可以扩展相同的方法.假设您希望将多个协议用作路由的端点.您可以使用直接端点来创建主路径,如下所示:
// Three endpoints to one "main" route.
from("activemq:queue:order.in")
.to("direct:processOrder");
from("file:some/file/path")
.to("direct:processOrder");
from("jetty:http://0.0.0.0/order/in")
.to("direct:processOrder");
from("direct:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
Run Code Online (Sandbox Code Playgroud)
另一件事是为DSL中的每个"from()"子句创建一个路由.路由是Camel中的工件,您可以使用Camel API对其执行某些管理任务,例如动态启动,停止,添加和删除路由."to"子句只是一个端点调用.
一旦开始做一些在Camel中有些复杂的真实案例,你会注意到你不能得到太多的"直接"路线.
| 归档时间: |
|
| 查看次数: |
11046 次 |
| 最近记录: |