第 1 章 为路由定义构建块


摘要

Apache Camel 支持两种替代 域特定语言 (DSL)用于定义路由:Java DSL 和 Spring XML DSL。定义路由的基本构建块是 端点和 处理器,处理器的行为通常由表达式或逻辑 predicates 修改。Apache Camel 允许您使用各种不同的语言来定义表达式和 predicates。

1.1. 实施 RouteBuilder 类

概述

要使用 域特定语言 (DSL),您可以扩展 RouteBuilder 类并覆盖其 configure () 方法(您定义路由规则)。

您可以根据需要定义任意数量的 RouteBuilder 类。每个类都实例化一次,并使用 CamelContext 对象注册。通常,每个 RouteBuilder 对象的生命周期由部署路由器的容器自动管理。

RouteBuilder 类

作为路由器开发人员,您的核心任务是实施一个或多个 RouteBuilder 类。您可以从以下位置继承两种替代 RouteBuilder 类:

  • org.apache.camel.builder.RouteBuilder. RouteBuilder -wagon this 是适合 部署到任何 容器类型的通用 RouteBuilder 基本类。它在 camel-core 工件中提供。
  • org.apache.camel.spring.SpringRouteBuilder HEKETI-wagon this base 类特别适应 Spring 容器。特别是,它提供对以下 Spring 具体功能的额外支持:在 Spring registry (使用 beanRef () Java DSL 命令)和事务中查找 Bean (请参阅 Transactions 指南 )。它在 camel-spring 工件中提供。

RouteBuilder 类定义用于启动路由规则的方法(例如,from ()intercept ()exception ())。

实施 RouteBuilder

例 1.1 “RouteBuilder 类的实现” 显示最小 RouteBuilder 实施。configure () 方法正文包含一个路由规则;每个规则都是单个 Java 语句。

例 1.1. RouteBuilder 类的实现

import org.apache.camel.builder.RouteBuilder;

public class MyRouteBuilder extends RouteBuilder {

public void configure() {
  // Define routing rules here:
  from("file:src/data?noop=true").to("file:target/messages");

  // More rules can be included, in you like.
  // ...
}
}

规则 from (URL1).to (URL2) 的形式指示路由器从 src/data 目录读取文件,并将它们发送到目录 target/messages。选项 ?noop=true 指示路由器在 src/data 目录中保留(不会删除)源文件。

注意

当您将 contextScan 与 Spring 或 Blueprint 搭配使用时,过滤 RouteBuilder 类,默认情况下,Apache Camel 将查找单例 Bean。但是,您可以打开旧行为,使其包含有新选项 includeNonSingletons 的范围。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.