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 版本开始,除非您明确创建自己的 RabbitMQ 连接工厂并将其提供给 CachingConnectionFactory,否则 Spring AMQP 会禁用它。 RabbitConnectionFactoryBean 创建的 RabbitMQ ConnectionFactory 实例也默认禁用了该选项。

Log4j 2 升级

Log4j 2 的最低版本(针对 AmqpAppender)现在是 2.7。 该框架不再与以前的版本兼容。 有关更多信息,请参阅 日志子系统 AMQP Appender

Logback Appender

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

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 连接的应用程序特定标识。 有关更多信息,请参阅 连接和资源管理

监听器容器更改

事务回滚行为

您现在可以配置事务回滚时的消息重新排队,使其保持一致,无论是否配置了事务管理器。 有关更多信息,请参阅 关于已接收消息回滚的注意事项