第 3 章 Red Hat build of Apache Camel for Spring Boot 入门


本指南介绍了红帽构建的 Apache Camel for Spring Boot,并演示了如何开始使用红帽构建的 Apache Camel for Spring Boot 来构建应用程序。

3.1. Red Hat build of Apache Camel for Spring Boot starters

Camel 支持 Spring Boot 提供 Camel 和启动器的自动配置,用于许多 Camel 组件。Camel 上下文自动配置在 Spring 上下文中自动探测到 Camel 路由,并将密钥 Camel 实用程序(如生成者模板、消费者模板和类型转换器)注册为 beans。

注意

有关使用 Maven archtype 为 Spring Boot 应用程序生成 Camel 的详情,请参考使用 Maven 生成 Camel for Spring Boot 应用程序

要开始,您必须将 Camel Spring Boot BOM 添加到 Maven pom.xml 文件中。

<dependencyManagement>

    <dependencies>
        <!-- Camel BOM -->
        <dependency>
            <groupId>com.redhat.camel.springboot.platform</groupId>
            <artifactId>camel-spring-boot-bom</artifactId>
            <version>4.10.7.redhat-00013</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- ... other BOMs or dependencies ... -->
    </dependencies>

</dependencyManagement>
Copy to Clipboard Toggle word wrap

camel-spring-boot-bom 是一个基本 BOM,其中包含 Camel Spring Boot starter JAR 列表。

接下来,添加 Camel Spring Boot 初学者 以启动 Camel 上下文

    <dependencies>
        <!-- Camel Starter -->
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
        </dependency>
        <!-- ... other dependencies ... -->
    </dependencies>
Copy to Clipboard Toggle word wrap

您还必须添加 Spring Boot 应用程序 所需的组件 启动程序。以下示例演示了如何将自动配置入门程序添加到 MQTT5 组件 中。https://access.redhat.com/documentation/zh-cn/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#spring_boot_auto_configuration_69

    <dependencies>
        <!-- ... other dependencies ... -->
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-paho-mqtt5</artifactId>
        </dependency>
    </dependencies>
Copy to Clipboard Toggle word wrap

3.1.1. Spring Boot 配置支持

每个 初学者 列出了您可以在标准 application.propertiesapplication.yml 文件中配置的配置参数。这些参数的格式为 camel.component.[component-name].[parameter]。例如,要配置 MQTT5 代理的 URL,您可以设置:

camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
Copy to Clipboard Toggle word wrap

3.1.2. 添加 Camel 路由

在 Spring 应用程序上下文中检测到 Camel 路由,例如,使用 org.springframework.stereotype.Component 注解的路由会被加载,添加到 Camel 上下文并运行中。

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class MyRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("...")
            .to("...");
    }

}
Copy to Clipboard Toggle word wrap

3.1.3. 使用域特定语言

Apache Camel 使用 Java 域特定语言或 DSL,在各种域特定语言(DSL)中创建企业集成模式或路由,如下所示:

  • Java DSL:使用流畅的构建器风格的基于 Java 的 DSL。
  • XML DSL:只有 Camel XML 文件中的基于 XML 的 DSL。
  • YAML DSL 使用 YAML 格式创建路由。

3.1.3.1. DSL 的优点

与通用语言相比,使用 DSL 的优点如下:

  • 更易于学习,更易于使用。您可以看到主逻辑的开始和结束位置。
  • 更安全的代码。Apache Camel 中的 DSL 具有稳定的构建块,它将所有步骤绑定到一起。
  • 错误是特定于域的。如果出现故障,错误描述更为明确和说明。更简单的代码也意味着不易出错的代码。
  • DSL 设计为独立于平台。如果代码更改,其影响被委派给较低层。

3.1.3.2. 比较不同的 DSL

本节介绍 DSL 和您可以使用这些 DSL 的不同场景之间的区别。

Expand
 Java DSLXML DSLYAML DSL

开发人员工具

  • 您可以将每个 IDE 与 Java 支持配合使用。
  • 红帽在 VS Code 中提供 Apache Camel 的扩展包。这个软件包包含在 VS Code 中使用 Red Hat build of Apache Camel 的所有必要扩展。这包括对 Camel K Java 独立、支持 Camel URI 完成和诊断以及从源编辑器运行和调试 Camel 路由的语言支持。
  • 语言支持和基本 Camel 文本路由调试。
  • 它提供了代码协助,并提供路由调试器。
  • 您可以将每个 IDE 与 XML 支持一起使用。
  • 红帽在 VS Code 中提供 Apache Camel 的扩展包。这个软件包包含在 VS Code 中使用 Red Hat build of Apache Camel 的所有必要扩展。这包括对 Camel K Java 独立、支持 Camel URI 完成和诊断以及从源编辑器运行和调试 Camel 路由的语言支持。
  • 语言支持和基本 Camel 文本路由调试
  • 它提供了代码协助,并提供路由调试器。
  • 您可以将每个 IDE 与 YAML 支持一起使用。
  • 红帽在 VS Code 中提供 Apache Camel 的扩展包。这个软件包包含在 VS Code 中使用 Red Hat build of Apache Camel 的所有必要扩展。这包括对 Camel K Java 独立、支持 Camel URI 完成和诊断以及从源编辑器运行和调试 Camel 路由的语言支持。
  • 语言支持和基本 Camel 文本路由调试。
  • 它提供了代码协助,并提供路由调试器。
  • 它还包括 Kaoto VS Code 扩展,它提供视觉集成设计器。

Hawtio / Fuse Console

Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。

Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。

Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。

软件开发模型

DSL 采用流畅的构建器 API。

  • 可以使用图形编辑器建模开发方法(Eclipse Desktop)。
  • 允许基于拖放开发。
  • 借助非常成熟的 IDE 支持,还可以进行基于文本的开发。

从头开始编写的难度。可以使用图形编辑器建模开发方法。

调试代码

  • 有 IDE 插件通过 EIP 步骤 DSL 调试来提供步骤。您可以逐步进入 RouteBuilder,但仅在启动时调用,而不在处理过程中调用。
  • 断点可以放入核心 Camel 类的 Java 代码中。
  • 可以添加临时处理器并使用 Java 调试器。
  • 有 IDE 插件通过 EIP 步骤 DSL 调试来提供步骤。
  • 断点可以放入核心 Camel 类的 Java 代码中。
  • 有 IDE 插件通过 EIP 步骤 DSL 调试来提供步骤。
  • 断点可以放入核心 Camel 类的 Java 代码中。

与依赖项注入(DI)框架集成

更轻松地与任何 DI 框架集成。

虽然可以从 XML DSL 中的 DI 框架引用现有的 Bean,但在 XML 中声明新的 Bean 时,在 XML 中声明新的 Bean 使这些 Bean 专用于 Camel 本身,而不是 DI 框架的一部分(如 Quarkus 或 Spring Boot)。

虽然可以从 YAML DSL 中的 DI 框架引用现有的 Bean,在 YAML 中声明新 Bean 使这些 Bean 专用于 Camel 本身,而不是 DI 框架的一部分(如 Quarkus 或 Spring Boot)。

团队大小

更灵活,但更难以阅读代码。适用于长期工作和支持代码的小型共同团队。

  • 对于大型和不同团队的好处。
  • 更灵活,使创建复杂路由变得困难。
  • 对于大型和不同团队的好处。
  • 更灵活,使创建复杂路由变得困难。

团队结构

要求团队拥有开发 Camel 集成的 Java 开发人员。其他团队成员还需要了解 Java 才能读取集成流。

  • XML 是广泛的语言,所有开发人员都可以在开发 Camel 时重复使用现有技能。
  • 它提供更高级别的抽象,使与业务开发人员和支持团队轻松通信。
  • YAML 是广泛的语言,所有开发人员都可以在开发 Camel 时重复使用现有技能。
  • 它提供更高级别的抽象,使与业务开发人员和支持团队轻松通信。

开发人员体验和首选项

  • 更适合 Java 经验丰富的开发人员比 XML 更加简洁,具有内部类和功能方面。
  • Java 开发人员倾向于首选纯 Java 和注释,而不是 XML。

适合新用户,因为它为设计路由提供了图形化的方法。

适合新用户,因为它为设计路由提供了图形化的方法。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat