第 1 章 红帽构建的 Apache Camel for Spring Boot 入门
本指南介绍了红帽构建的 Apache Camel for Spring Boot,并演示如何使用红帽构建的 Apache Camel for Spring Boot 构建应用程序。
Camel 对 Spring Boot 的支持为许多 Camel 组件提供 Camel 和启动程序的 自动配置。在 Spring 上下文中提供的 Camel 上下文自动探测 Camel 路由的建议自动配置,并将密钥 Camel 工具(如制作者模板、消费者模板和类型转换器)注册为 beans。
有关使用 Maven archtype 为 Spring Boot 应用程序生成 Camel 的详情,请参考使用 Maven 为 Spring Boot 应用程序生成 Camel。
要开始,您必须将 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
1.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
1.1.2. 添加 Camel 路由 复制链接链接已复制到粘贴板!
Camel 路由 在 Spring 应用程序上下文中检测到,例如使用 org.springframework.stereotype.Component 注解的路由将被加载到 Camel 上下文并运行中。
1.1.3. 使用域特定语言 复制链接链接已复制到粘贴板!
Apache Camel 使用 Java 域特定语言或 DSL,在各种域特定语言(DSL)中创建企业集成模式或路由,如下所示:
- Java DSL:使用流畅的构建器风格的基于 Java 的 DSL。
- XML DSL:只有 Camel XML 文件中的基于 XML 的 DSL。
- YAML DSL 使用 YAML 格式创建路由。
1.1.3.1. DSL 的优点 复制链接链接已复制到粘贴板!
与通用语言相比,使用 DSL 的优点如下:
- 更易于学习,更易于使用。您可以看到主逻辑的开始和结束位置。
- 更安全的代码。Apache Camel 中的 DSL 具有稳定的构建块,它将所有步骤绑定到一起。
- 错误是特定于域的。如果出现故障,错误描述更为明确和说明。更简单的代码也意味着不易出错的代码。
- DSL 设计为独立于平台。如果代码更改,其影响被委派给较低层。
1.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 才能读取集成流。 |
|
|
| 开发人员体验和首选项 |
| 适合新用户,因为它为设计路由提供了图形化的方法。 | 适合新用户,因为它为设计路由提供了图形化的方法。 |