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 连接的应用程序特定标识。参见 连接和资源管理 了解更多信息。
监听器容器变更
事务回滚行为
现在您可以配置事务回滚时的消息重新入队行为,使其保持一致,无论是否配置了事务管理器。参见 关于接收消息回滚的注意事项 了解更多信息。