1.7 相较于 1.6 的变更
AMQP 客户端库
Spring AMQP 现在使用 RabbitMQ 团队提供的新版本 amqp-client 库 4.0.x。此客户端默认配置了自动恢复。参见 RabbitMQ 自动连接/拓扑恢复。
4.0.x 客户端默认启用自动恢复。虽然与此特性兼容,但 Spring AMQP 有自己的恢复机制,通常不需要客户端的恢复特性。我们建议禁用 amqp-client 自动恢复,以避免在 Broker 可用但连接尚未恢复时出现 AutoRecoverConnectionNotCurrentlyOpenException 实例。从 1.7.1 版本开始,Spring AMQP 默认禁用此功能,除非您明确创建自己的 RabbitMQ 连接工厂并将其提供给 CachingConnectionFactory。由 RabbitConnectionFactoryBean 创建的 RabbitMQ ConnectionFactory 实例也默认禁用了此选项。 |
Log4j 2 升级
Log4j 2 的最低版本(用于 AmqpAppender)现在是 2.7。该框架不再兼容以前的版本。参见 日志子系统 AMQP Appender 了解更多信息。
Logback Appender
此 Appender 默认不再捕获调用者数据(方法、行号)。您可以通过设置配置选项 includeCallerData 来重新启用它。参见 日志子系统 AMQP Appender 了解有关可用日志 Appender 的信息。
Spring Retry 升级
Spring Retry 的最低版本现在是 1.2。该框架不再兼容以前的版本。
关闭行为
现在您可以将 forceCloseChannel 设置为 true,这样如果容器线程在 shutdownTimeout 内没有响应关闭操作,通道将被强制关闭,导致任何未 ack 的消息重新入队。参见 消息监听器容器配置 了解更多信息。
JUnit @Rules
以前由框架内部使用的规则现在已在名为 spring-rabbit-junit 的单独 jar 包中提供。参见 JUnit4 @Rules 了解更多信息。
连接命名策略
现在提供了一个新的 ConnectionNameStrategy,用于从 AbstractConnectionFactory 中填充目标 RabbitMQ 连接的应用程序特定标识。参见 连接和资源管理 了解更多信息。
监听器容器变更
事务回滚行为
现在您可以配置事务回滚时的消息重新入队行为,使其保持一致,无论是否配置了事务管理器。参见 关于接收消息回滚的注意事项 了解更多信息。