跳到主要内容

1.7 版本相对于 1.6 版本的变更

DeepSeek V3 中英对照 Changes in 1.7 Since 1.6

AMQP 客户端库

Spring AMQP 现在使用了由 RabbitMQ 团队提供的 amqp-client 库的新版本 4.0.x。此客户端默认配置了自动恢复功能。详情请参阅 RabbitMQ 自动连接/拓扑恢复

备注

4.0.x 客户端默认启用了自动恢复功能。虽然 Spring AMQP 兼容此功能,但它有自己的恢复机制,通常不需要客户端的恢复功能。我们建议禁用 amqp-client 的自动恢复功能,以避免在代理可用但连接尚未恢复时出现 AutoRecoverConnectionNotCurrentlyOpenException 异常。从 1.7.1 版本开始,Spring AMQP 会默认禁用此功能,除非你显式创建自己的 RabbitMQ 连接工厂并将其提供给 CachingConnectionFactory。由 RabbitConnectionFactoryBean 创建的 RabbitMQ ConnectionFactory 实例也默认禁用了此选项。

Log4j 2 升级

AmqpAppender 所需的最低 Log4j 2 版本现在为 2.7。该框架不再兼容之前的版本。更多信息请参阅 日志子系统 AMQP 附加器

Logback 附加器

此 appender 默认不再捕获调用者数据(方法名、行号)。您可以通过设置 includeCallerData 配置选项重新启用该功能。有关可用日志 appender 的信息,请参阅 日志子系统 AMQP Appenders

Spring Retry 升级

最低 Spring Retry 版本现在为 1.2。该框架不再兼容之前的版本。

关机行为

你现在可以将 forceCloseChannel 设置为 true,这样,如果容器线程在 shutdownTimeout 时间内没有响应关闭操作,通道将被强制关闭,导致任何未确认的消息重新入队。更多信息请参见消息监听容器配置

FasterXML Jackson 升级

最低 Jackson 版本现在为 2.8。框架不再兼容之前的版本。

JUnit @Rules

框架内部以前使用的规则现在已经被单独打包在一个名为 spring-rabbit-junit 的 jar 中提供。更多信息请参见 JUnit4 @Rules

容器条件回滚

当你使用外部事务管理器(如 JDBC)时,现在支持在向容器提供事务属性时使用基于规则的回滚机制。此外,当使用事务建议时,现在也变得更加灵活。

连接命名策略

现在提供了一个新的 ConnectionNameStrategy,用于从 AbstractConnectionFactory 中填充目标 RabbitMQ 连接的应用程序特定标识。更多信息请参阅连接与资源管理

监听器容器变更

事务回滚行为

现在,无论是否配置了事务管理器,您都可以配置消息在事务回滚时的重新入队行为,以保持一致性。有关更多信息,请参阅关于接收消息回滚的说明