1.7 版本相对于 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 连接的应用程序特定标识。更多信息请参阅连接与资源管理。
监听器容器变更
事务回滚行为
现在,无论是否配置了事务管理器,您都可以配置消息在事务回滚时的重新入队行为,以保持一致性。有关更多信息,请参阅关于接收消息回滚的说明。