gpt4 book ai didi

apache-camel - Apache Camel 中的 "direct:"和 to() 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 21:40:03 28 4
gpt4 key购买 nike

DirectComponent documentation给出以下示例:

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");

那和下面有什么区别吗?
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");

我试图找到有关 to() 方法在 Java DSL 上的行为的文档,但在 RouteDefinition javadoc 之外。 (这给出了非常简短的“将交换发送到给定的端点”)我来了空白:(

最佳答案

在上述情况下,您不会注意到太大的差异。 “直接”组件很像方法调用。

一旦开始构建更复杂的路线,出于多种原因,您将希望将它们分成几个不同的部分。

例如,您可以创建可以在 Camel 上下文中的多个路由之间重用的“子路由”。就像您在常规编程中分割方法以允许可重用​​性并使代码更清晰一样。使用例如直接组件的子路由也是如此。

可以扩展相同的方法。假设您希望将多个协议(protocol)用作路由的端点。您可以使用直接端点来创建主路由,如下所示:

// 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");

另一件事是为 DSL 中的每个“from()”子句创建一个路由。路由是 Camel 中的工件,您可以使用 Camel API 对它执行某些管理任务,例如动态启动、停止、添加、删除路由。 “to”子句只是一个端点调用。

一旦开始在 Camel 中做一些有些复杂的真实案例,你会注意到你不能得到太多的“直接”路由。

关于apache-camel - Apache Camel 中的 "direct:"和 to() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com