自 2.0 以来 2.1 中的更改

AMQP 客户端库

Spring AMQP 现在使用 RabbitMQ 团队提供的库的 5.4.x 版本。 默认情况下,此客户端配置了自动恢复。 请参阅 RabbitMQ 自动连接/拓扑恢复amqp-clientspring-doc.cn

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

套件更改

某些类已移至不同的包。 大多数是内部类,不会影响用户应用程序。 两个例外是 和 。 这些接口现在位于 .ChannelAwareMessageListenerRabbitListenerErrorHandlerorg.springframework.amqp.rabbit.listener.apispring-doc.cn

发布者确认更改

当存在未完成的确认时,启用了发布者确认的通道不会返回到缓存中。 有关更多信息,请参阅 Correlated Publisher Confirms and Returnsspring-doc.cn

Listener Container Factory 改进

现在,您可以使用侦听器容器工厂创建任何侦听器容器,而不仅仅是那些用于注释或 . 有关更多信息,请参阅使用容器工厂@RabbitListener@RabbitListenerEndpointRegistryspring-doc.cn

ChannelAwareMessageListener现在继承自 。MessageListenerspring-doc.cn

Broker 事件侦听器

引入了 A 以将选定的代理事件发布为实例。 有关更多信息,请参阅 Broker Event ListenerBrokerEventListenerApplicationEventspring-doc.cn

RabbitAdmin 更改

发现 bean 类型的 bean(它是 - 、 和 对象的容器)并在代理上声明包含的对象。 不鼓励用户使用旧的声明机制(和其他机制),而应该改用 bean。 默认情况下,旧机制处于禁用状态。 有关更多信息,请参见Declaring Collections of Exchanges, Queues, and BindingsRabbitAdminDeclarablesDeclarableQueueExchangeBinding<Collection<Queue>>Declarablesspring-doc.cn

AnonymousQueue现在,默认情况下,实例声明为 Set to,以确保在应用程序连接到的节点上创建队列。 有关更多信息,请参阅 配置 Brokerx-queue-master-locatorclient-localspring-doc.cn

RabbitTemplate 更改

现在,您可以使用选项配置 ,以控制操作中回复使用者的标志。 有关更多信息,请参阅请求/回复消息。RabbitTemplatenoLocalReplyConsumernoLocalsendAndReceive()spring-doc.cn

CorrelationData对于发布者确认,现在有一个 ,您可以使用它来获取确认,而不是使用回调。 启用返回和确认后,关联数据(如果提供)将填充返回的消息。 有关更多信息,请参阅 Correlated Publisher Confirms and ReturnsListenableFuturespring-doc.cn

现在提供了一个 called 的方法来通知 subclasses 回复已超时,从而允许任何状态清理。 有关更多信息,请参阅 Reply Timeout (回复超时)。replyTimedOutspring-doc.cn

现在,您可以指定在将 request/reply 与 a(默认)一起使用时,在传递回复时发生异常(例如,延迟回复)时调用。 请参阅 上的 。 (也是从 2.0.11 开始)。ErrorHandlerDirectReplyToMessageListenerContainersetReplyErrorHandlerRabbitTemplatespring-doc.cn

消息转换

我们引入了一个新功能,以支持将消息从 XML 格式转换为 XML 格式。 有关更多信息,请参见Jackson2XmlMessageConverterJackson2XmlMessageConverterspring-doc.cn

管理 REST API

现在已弃用,取而代之的是直接 (或 ) 用法。 有关更多信息,请参阅 RabbitMQ REST APIRabbitManagementTemplatecom.rabbitmq.http.client.Clientcom.rabbitmq.http.client.ReactorNettyClientspring-doc.cn

@RabbitListener变化

侦听器容器工厂现在可以配置发送回复时使用的 and(可选)。 有关更多信息,请参阅启用侦听器终端节点注释RetryTemplateRecoveryCallbackspring-doc.cn

异步返回@RabbitListener

@RabbitListener方法现在可以返回 或 . 有关更多信息,请参阅 异步 @RabbitListener 返回类型ListenableFuture<?>Mono<?>spring-doc.cn

连接工厂 Bean 更改

默认情况下,now 调用 . 要恢复到之前的行为,请将该属性设置为 。RabbitConnectionFactoryBeanenableHostnameVerification()enableHostnameVerificationfalsespring-doc.cn

连接工厂更改

现在无条件地禁用底层 RabbitMQ 中的自动恢复,即使在构造函数中提供了预配置的实例。 虽然已经采取了步骤使 Spring AMQP 与自动恢复兼容,但出现了某些极端情况,问题仍然存在。 Spring AMQP 从 1.0.0 开始就有了自己的恢复机制,不需要使用 Client 端提供的恢复。 虽然在构建 后仍可以启用该功能 (使用 ),但我们强烈建议您不要这样做。 如果您在直接使用 client 工厂时需要自动恢复连接(而不是使用 Spring AMQP 组件),我们建议您使用单独的 RabbitMQ。CachingConnectionFactoryConnectionFactorycachingConnectionFactory.getRabbitConnectionFactory().setAutomaticRecoveryEnabled()CachingConnectionFactoryConnectionFactoryspring-doc.cn

侦听器容器更改

现在,默认值会完全丢弃在存在标头时导致致命错误的消息。 有关更多信息,请参阅异常处理ConditionalRejectingErrorHandlerx-deathspring-doc.cn

立即重新排队

引入了一个 new 来通知侦听器容器消息必须重新排队。 要使用此功能,需要添加新的实现。ImmediateRequeueAmqpExceptionImmediateRequeueMessageRecovererspring-doc.cn