2.3. 升级 Fuse 在线集成
当您升级到 Fuse Online 7.10 时,您应该确定是否需要对现有集成进行更改。
查看 Camel 迁移注意事项中描述的 Apache Camel 更新。
即使集成不需要更改,您必须重新发布任何正在运行的集成,因为基础架构升级期间和之后,现有集成仍会使用旧版本的 Fuse 在线库和依赖项运行。要使用更新的版本运行,您必须重新发布它们。
流程
要重新发布您的集成,在您的 Fuse 在线环境中:
- 在 Fuse Online左侧导航面板中,单击 Integrations。
对于每个集成:
- 在集成条目右侧,点 并选择 Edit。
- 当 Fuse Online 显示用于编辑的集成时,单击右上角的 Publish。
发布会强制重新构建使用最新的 Fuse 在线依赖项。
如果集成的任何元素都有较新的依赖项,则 Fuse Online 用户界面会显示一个警告。
2.3.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 问题。