AMQP 客户端库

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

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

套餐变更

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

发布者确认更改

为发布者确认启用的频道在有未完成的确认时不会返回到缓存中。 有关详细信息,请参阅相关发布者确认和退货Spring中文文档

侦听器容器工厂改进

现在,您可以使用侦听器容器工厂创建任何侦听器容器,而不仅仅是用于批注或 . 有关详细信息,请参阅使用容器工厂@RabbitListener@RabbitListenerEndpointRegistrySpring中文文档

ChannelAwareMessageListener现在继承自 .MessageListenerSpring中文文档

代理事件侦听器

引入 A 以将选定的代理事件发布为实例。 有关更多信息,请参阅 Broker Event ListenerBrokerEventListenerApplicationEventSpring中文文档

RabbitAdmin 更改

发现类型为 bean(它是 -、 和 对象的容器)并在代理上声明包含的对象。 不鼓励用户使用旧的声明机制(和其他机制),而应该改用 bean。 默认情况下,旧机制处于禁用状态。 有关更多信息,请参见声明 Exchange、Queues 和 Bindings 的集合RabbitAdminDeclarablesDeclarableQueueExchangeBinding<Collection<Queue>>DeclarablesSpring中文文档

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

RabbitTemplate 更改

现在,您可以使用选项进行配置,以控制操作中应答使用者的标志。 有关详细信息,请参阅请求/回复消息传递。RabbitTemplatenoLocalReplyConsumernoLocalsendAndReceive()Spring中文文档

CorrelationData对于发布者确认,现在有一个 ,您可以使用它来获取确认,而不是使用回调。 启用返回和确认后,关联数据(如果提供)将填充返回的消息。 有关详细信息,请参阅相关发布者确认和退货ListenableFutureSpring中文文档

现在提供了一个调用的方法来通知子类回复已超时,从而允许任何状态清理。 有关详细信息,请参阅回复超时replyTimedOutSpring中文文档

现在,您可以指定在将请求/回复与 a(默认)一起使用时调用的 an,当发送回复时发生异常(例如,延迟回复)。 请参阅 . (也是从 2.0.11 开始)。ErrorHandlerDirectReplyToMessageListenerContainersetReplyErrorHandlerRabbitTemplateSpring中文文档

消息转换

我们引入了一个新功能,以支持将消息从 XML 格式转换为 XML 格式。 有关更多信息,请参见 Jackson2XmlMessageConverterJackson2XmlMessageConverterSpring中文文档

管理 REST API

现在已弃用,取而代之的是直接(或)用法。 有关详细信息,请参阅管理 REST APIRabbitManagementTemplatecom.rabbitmq.http.client.Clientcom.rabbitmq.http.client.ReactorNettyClientSpring中文文档

@RabbitListener变化

侦听器容器工厂现在可以配置为发送回复时使用的 a 和 (可选)。 有关详细信息,请参阅启用侦听器终端节点注释RetryTemplateRecoveryCallbackSpring中文文档

异步返回@RabbitListener

@RabbitListener方法现在可以返回 或 。 有关更多信息,请参见异@RabbitListener返回类型ListenableFuture<?>Mono<?>Spring中文文档

连接工厂 Bean 更改

默认情况下,now 调用 . 若要恢复到以前的行为,请将属性设置为 。RabbitConnectionFactoryBeanenableHostnameVerification()enableHostnameVerificationfalseSpring中文文档

连接工厂更改

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

侦听器容器更改

现在,默认值会完全丢弃在存在标头时导致致命错误的消息。 有关详细信息,请参阅异常处理ConditionalRejectingErrorHandlerx-deathSpring中文文档

立即重新排队

引入了一个新功能,用于通知侦听器容器必须将消息重新排队。 若要使用此功能,需要添加新的实现。ImmediateRequeueAmqpExceptionImmediateRequeueMessageRecovererSpring中文文档

有关详细信息,请参阅消息侦听器和异步案例Spring中文文档