搜索

第 6 章 在 JBoss EAP 独立上升级 Fuse 应用程序

download PDF

在 JBoss EAP 上升级 Fuse 应用程序:

  • 您应该考虑 Apache Camel 更新,如 第 6.1 节 “Camel 迁移注意事项” 所述。
  • 您必须更新 Fuse 项目的 Maven 依赖项,以确保您使用正确的 Fuse 版本。

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

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

  • 您必须更新 Fuse 项目的 Maven 依赖项,以确保您使用 Java EE 依赖项的升级版本,如 第 6.4 节 “升级 Java EE 依赖项” 所述。

6.1. Camel 迁移注意事项

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

在 Fuse 7.12 中,使用 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.