1.4. 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 问题。