你如何从 Java 代码中调用 Camel 路由?
了解路由以及如何在 Apache Camel 中使用它们
如果您仍在学习 Camel 的基础知识,那么您可能会遇到术语route。
但究竟什么是骆驼路线?
Apache Camel 中的路由是由 Camel 按顺序执行的一系列步骤,它们使用和处理消息。Camel 路由从消费者开始,然后是一系列端点和处理器。
因此,首先,路由使用消费者接收消息——可能来自磁盘上的文件或消息队列。然后,Camel 执行路由中的其余步骤,或者以某种方式处理消息,或者将其发送到端点(可以包括其他路由)以进行进一步处理。
如何在 Camel 中创建路线?
要在 Camel 中创建路由,首先要在代码中定义它。这称为路由定义,通常用 Java 或 XML 编写。
然后,您启动 Camel,将您的路线定义传递给它。Camel 读取路由定义并在Camel Context 中创建路由。Camel Context 是一个引擎,它是 Camel 的一部分,它运行你的路线。
一旦 Camel Context 启动,您可以
骆驼路线示例
要查看路线的实际情况,请参阅以下示例。
首先,该路由是用 Java 语法或 DSL(Domain-Specific Language)编写的。在 Java 中,路由进入一个RouteBuilder
类,该类有一个configure()
方法,您可以将路由代码添加到:
import org.apache.camel.builder.RouteBuilder; public class MyFirstRouteBuilder extends RouteBuilder { public void configure() throws Exception { from("jms:queue:HELLO.WORLD") .log("Received message - ${body}"); } }
此路由使用 JMS 组件从名为HELLO.WORLD的队列接收消息。然后,它将包含消息正文 ( ${body}
)的日志消息写入控制台。
骆驼路线和组件解释(信息图)
有时可能很难准确理解路由的作用以及它是如何工作的。所以我创建了这个信息图来展示 Camel 中的不同概念是如何在一条路线中结合在一起的。
在这张图中,我们有一条路线。我们使用 File 组件来读写文件。我们还使用基于
Apache Camel 中的路由解释
你如何从 Java 代码中调用 Camel 路由?
如果您已经在应用程序中嵌入了 Camel,则可以使用 Camel API 向 Camel 端点发送消息。
要从您的代码向 Camel 路由发送消息,请获取ProducerTemplate
对象。然后:
-
要异步发送消息,请使用其中一种
sendXXX()
方法 -
要同步发送消息(并使用响应),请使用其中一种
requestXXX()
方法
例如,如果您使用 Spring,您可能会执行以下操作以异步(即发即弃)向端点发送消息:
import org.apache.camel.ProducerTemplate; public class InvokeCamelRoute { @Autowired protected ProducerTemplate template; public void invokeRoute() { template.sendBody("direct:start", "Your message body goes here"); } }