第 3 章 在 Spring Boot 独立上升级 Fuse 应用程序


在 Spring Boot 上升级 Fuse 应用程序:

通常,您可以使用 Maven 来构建 Fuse 应用程序。Maven 是 Apache 的免费开源构建工具。Maven 配置在 Fuse 应用程序项目的 pom.xml 文件中定义。在构建 Fuse 项目时,Maven 会搜索外部存储库并下载所需的工件。您可以将 Fuse Bill of Materials (BOM)的依赖关系添加到 pom.xml 文件中,以便 Maven 构建过程会获取正确的 Fuse 支持的工件集合。

以下小节提供有关 Maven 依赖项的信息,以及如何在 Fuse 项目中更新它们。

3.1. Camel 迁移注意事项

Red Hat Fuse 使用 Apache Camel 2.23。升级到 Fuse 7.8 时,您应该考虑对 Camel 2.22 和 2.23 的以下更新。

Camel 2.22 更新

  • Camel 已从 Spring Boot v1 升级到 v2,因此不再支持 v1。
  • 升级到 Spring Framework 5。Camel 应该与 Spring 4.3.x 一起工作,但转发 Spring 5.x 将在以后的版本中是 Spring 5.x 的最低 Spring 版本。
  • 升级到 Karaf 4.2。您可以在 Karaf 4.1 上运行 Camel,但在此发行版本中,我们仅官方支持 Karaf 4.2。
  • 使用 toD DSL 优化,为可能出现的组件重复使用端点和制作者。例如,基于 HTTP 的组件将重复使用发送到同一主机的动态 URI 的生成者(HTTP 客户端)。
  • 现在,具有 read-lock idempotent/idempotent-changed 的 File2 使用者可以被配置为延迟发行任务,以便在处理过程中使用文件扩展窗口,该文件可以在带有共享幂等存储库的主动/主动集群设置中可用,以确保其他节点无法快速将已处理的文件视为可处理的文件(仅当您具有 readLockRemoveOnCommit=true 时)。
  • 允许在 request/reply 模式中在 Netty4 producer 上插件自定义请求/回复关联 ID 管理器。author 组件现在默认使用扩展模式来支持大于 140 个字符的 12 月
  • REST DSL 生成者现在支持使用 endpointProperties 在 REST 配置中配置。
  • Kafka 组件现在支持 HeaderFilterStrategy 插件自定义实现,以控制 Camel 和 Kafka 信息之间的标头映射。
  • REST DSL 现在支持客户端请求验证,以验证 Content-Type/Accept 标头是否可以用于 REST 服务。
  • Camel 现在有一个 Service Registry SPI,它允许您使用 Camel 实现或 Spring Cloud 将路由注册到服务 registry (如 consul、etcd 或 zookeeper)。
  • SEDA 组件现在的默认队列大小为 1000,而不是无限。
  • 解决了以下值得注意的问题:

    • 修复了 camel-cxf consumer 的 CXF continuation 超时问题,可能会导致消费者返回带有数据的响应,而不是向调用 SOAP 客户端触发超时。
    • 修复了 camel-cxf consumer 在使用强大的单向操作时,不会发布 UoW。
    • 修复了使用 AdviceWith,并使用 weave onException 等方法无法正常工作。
    • 修复了并行处理和流模式中的 Splitter 可能会阻断,而当迭代消息正文()ator 在第一个调用的 next ()方法调用中抛出异常时。
    • 修复了 Kafka 使用者,如果 autoCommitEnable=false,则不会自动提交。
    • 修复了文件消费者默认使用 markerFile 作为 read-lock,这应该为 none。
    • 修复了使用带有 Kafka 的手动提交以提供当前的记录偏移而不是之前(第一个为 -1 )。
    • 修复了 Java DSL 中的基于内容路由器的问题可能无法解析 when predicates 中的属性占位符。

Camel 2.23 更新

  • 升级到 Spring Boot 2.1。
  • 现在,可以使用 spring-boot 自动配置来配置其他组件级选项。这些选项包含在 spring-boot 组件元数据 JSON 文件描述符中,以获得工具协助。
  • 添加了一个文档部分,其中包含所有组件、数据格式和语言的所有 Spring Boot 自动配置选项。
  • 现在,所有 Camel Spring Boot starter JARs 都会在其 JARs 中包含 META-INF/spring-autoconfigure-metadata.properties 文件,以优化 Spring Boot 自动配置。
  • Throttler 现在支持基于动态表达式的关联组,以便您可以将消息分组到不同的节流集中。
  • Hystrix EIP 现在允许 Camel 的错误处理程序继承,以便在您启用了带有红色错误处理时再次重试整个 Hystrix EIP 块。
  • SQL 和 ElSql 用户现在支持路由格式的动态查询参数。请注意,这个功能仅限于使用简单表达式调用 Bean。
  • swagger-restdsl maven 插件现在支持从 Swagger 规格文件中生成 DTO 模型类。
  • 解决了以下值得注意的问题:

    • 已修复 Aggregator2,使其不会传播用于强制完成所有组的控制标头,因此当路由期间使用另一个聚合器 EIP 时不会再次发生。
    • 修复了错误处理程序中被重新传送的 Tracer 无法正常工作。
    • XML 文档的内置类型转换器可能会输出将错误解析到 stdout,现在已修复为使用日志记录 API 的输出。
    • 修复了使用 charset 选项(如果消息正文基于流传输)的 SFTP 编写文件无法正常工作。
    • 修复了当通过多个路由的路由时,不会重复使用 Zipkin root id,以便将它们分组到一个父范围中。
    • 修复了在主机名包含带有数字的 IP 地址时,使用 HTTP 端点时优化为D。
    • 修复了在通过临时队列进行请求/回复以及使用手动确认模式的 RabbitMQ 的问题。它不会确认临时队列(需要尽可能发出请求/回复)。
    • 修复了在 Allow 标头中为 OPTIONS 请求返回所有允许的 HTTP 动词(如使用 rest-dsl 时)的各种 HTTP 消费者组件。
    • 修复了 FluentProducerTemplate 的 thread-safety 问题。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.