第 3 章 Red Hat build of Apache Camel for Spring Boot 入门
本指南介绍了红帽构建的 Apache Camel for Spring Boot,并演示了如何开始使用红帽构建的 Apache Camel for Spring Boot 来构建应用程序。
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 文件中。
camel-spring-boot-bom 是一个基本 BOM,其中包含 Camel Spring Boot starter JAR 列表。
接下来,添加 Camel Spring Boot 初学者 以启动 Camel 上下文。
您还必须添加 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
3.1.1. Spring Boot 配置支持 复制链接链接已复制到粘贴板!
每个 初学者 列出了您可以在标准 application.properties 或 application.yml 文件中配置的配置参数。这些参数的格式为 camel.component.[component-name].[parameter]。例如,要配置 MQTT5 代理的 URL,您可以设置:
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
3.1.2. 添加 Camel 路由 复制链接链接已复制到粘贴板!
在 Spring 应用程序上下文中检测到 Camel 路由,例如,使用 org.springframework.stereotype.Component 注解的路由会被加载,添加到 Camel 上下文并运行中。
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 的不同场景之间的区别。
| Java DSL | XML DSL | YAML DSL | |
|---|---|---|---|
| 开发人员工具 |
|
|
|
| Hawtio / Fuse Console | Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。 | Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。 | Hawtio 从运行时检索路由作为 XML,并显示路由,而不考虑使用哪个 DSL 创建路由。 |
| 软件开发模型 | DSL 采用流畅的构建器 API。 |
| 从头开始编写的难度。可以使用图形编辑器建模开发方法。 |
| 调试代码 |
|
|
|
| 与依赖项注入(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 才能读取集成流。 |
|
|
| 开发人员体验和首选项 |
| 适合新用户,因为它为设计路由提供了图形化的方法。 | 适合新用户,因为它为设计路由提供了图形化的方法。 |