第 5 章 在 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 项目中更新它们。

5.1. Camel 迁移注意事项

使用 MongoClients 工厂创建到 MongoDB 的连接

在 Fuse 7.10 中,使用 com.mongodb.client.MongoClient 而不是 com.mongodb.MongoClient 创建与 MongoDB 的连接(请注意完整路径中的额外 .client 子软件包)。

如果任何现有 Fuse 应用程序使用 camel-mongodb 组件,您必须:

  • 更新您的应用,以创建连接 bean 作为 com.mongodb.client.MongoClient 实例。

    例如,创建一个到 MongoDB 的连接,如下所示:

    import com.mongodb.client.MongoClient;

    然后您可以创建 MongoClient bean,如下例所示:

    return MongoClients.create("mongodb://admin:password@192.168.99.102:32553");
  • 如果需要,请重构与 MongoClient 类公开的方法相关的任何代码。

Camel 2.23

红帽 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 版本。
  • 升级到 Karaf 4.2。您可以在 Karaf 4.1 上运行 Camel,但我们在此版本中仅正式支持 Karaf 4.2。
  • 使用 toD DSL 优化,以将端点和制作者重新用于组件。例如,基于 HTTP 的组件现在将利用动态 URI 发送到同一主机的生成者(HTTP 客户端)。
  • 现在,可以配置具有 read-lock idempotent/idempotent-changed 的 File2 使用者,以延迟发行任务,以便在文件被视为进程中时扩展窗口,这可用于具有共享的幂等存储库的 active/active 集群设置,以确保其他节点没有太快地将已处理的文件作为文件(如果您有 readLockRemoveOnCommit=true 时才需要)。
  • 允许以 request/reply 模式在 Netty4 producer 上插件自定义请求/回复 ID 管理器实现。Twitter 组件现在默认使用扩展模式来支持大于 140 个字符的 tweets
  • REST DSL 生成者现在支持使用 endpointProperties 在 REST 配置中配置。
  • Kafka 组件现在支持 HeaderFilterStrategy 来插件自定义实现,以控制 Camel 和 Kafka 信息之间的标头映射。
  • REST DSL 现在支持客户端请求验证 REST 服务是否可以验证 Content-Type/Accept 标头。
  • Camel 现在有一个 Service Registry SPI,它允许您使用 Camel 实现或 Spring Cloud 将路由注册到服务 registry (如 consul、etcd 或 zookeeper)。
  • SEDA 组件现在的默认队列大小为 1000,而不是无限。
  • 以下值得注意的问题已被修复:

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

Camel 2.23 更新

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.