AMQP 客户端库
Spring AMQP 现在使用 RabbitMQ 团队提供的库的 5.4.x 版本。
默认情况下,此客户端配置了自动恢复。
请参阅 RabbitMQ 自动连接/拓扑恢复。amqp-client
从版本 4.0 开始,客户端默认启用自动恢复。
虽然与此功能兼容,但 Spring AMQP 有自己的恢复机制,通常不需要客户端恢复功能。
我们建议禁用自动恢复,以避免在代理可用但连接尚未恢复时获取实例。
从版本 1.7.1 开始,Spring AMQP 会禁用它,除非您显式创建自己的 RabbitMQ 连接工厂并将其提供给 .
默认情况下,由 创建的 RabbitMQ 实例也禁用了该选项。amqp-client AutoRecoverConnectionNotCurrentlyOpenException CachingConnectionFactory ConnectionFactory RabbitConnectionFactoryBean |
从版本 4.0 开始,客户端默认启用自动恢复。
虽然与此功能兼容,但 Spring AMQP 有自己的恢复机制,通常不需要客户端恢复功能。
我们建议禁用自动恢复,以避免在代理可用但连接尚未恢复时获取实例。
从版本 1.7.1 开始,Spring AMQP 会禁用它,除非您显式创建自己的 RabbitMQ 连接工厂并将其提供给 .
默认情况下,由 创建的 RabbitMQ 实例也禁用了该选项。amqp-client AutoRecoverConnectionNotCurrentlyOpenException CachingConnectionFactory ConnectionFactory RabbitConnectionFactoryBean |
套餐变更
某些类已移至不同的包。
大多数是内部类,不会影响用户应用程序。
两个例外是 和 。
这些接口现在位于 .ChannelAwareMessageListener
RabbitListenerErrorHandler
org.springframework.amqp.rabbit.listener.api
发布者确认更改
为发布者确认启用的频道在有未完成的确认时不会返回到缓存中。 有关详细信息,请参阅相关发布者确认和退货。
侦听器容器工厂改进
现在,您可以使用侦听器容器工厂创建任何侦听器容器,而不仅仅是用于批注或 .
有关详细信息,请参阅使用容器工厂。@RabbitListener
@RabbitListenerEndpointRegistry
ChannelAwareMessageListener
现在继承自 .MessageListener
代理事件侦听器
引入 A 以将选定的代理事件发布为实例。
有关更多信息,请参阅 Broker Event Listener。BrokerEventListener
ApplicationEvent
RabbitAdmin 更改
发现类型为 bean(它是 -、 和 对象的容器)并在代理上声明包含的对象。
不鼓励用户使用旧的声明机制(和其他机制),而应该改用 bean。
默认情况下,旧机制处于禁用状态。
有关更多信息,请参见声明 Exchange、Queues 和 Bindings 的集合。RabbitAdmin
Declarables
Declarable
Queue
Exchange
Binding
<Collection<Queue>>
Declarables
AnonymousQueue
现在,默认情况下,实例声明为 Set to ,以确保在应用程序连接到的节点上创建队列。
有关更多信息,请参阅配置代理。x-queue-master-locator
client-local
RabbitTemplate 更改
现在,您可以使用选项进行配置,以控制操作中应答使用者的标志。
有关详细信息,请参阅请求/回复消息传递。RabbitTemplate
noLocalReplyConsumer
noLocal
sendAndReceive()
CorrelationData
对于发布者确认,现在有一个 ,您可以使用它来获取确认,而不是使用回调。
启用返回和确认后,关联数据(如果提供)将填充返回的消息。
有关详细信息,请参阅相关发布者确认和退货。ListenableFuture
现在提供了一个调用的方法来通知子类回复已超时,从而允许任何状态清理。
有关详细信息,请参阅回复超时。replyTimedOut
现在,您可以指定在将请求/回复与 a(默认)一起使用时调用的 an,当发送回复时发生异常(例如,延迟回复)。
请参阅 .
(也是从 2.0.11 开始)。ErrorHandler
DirectReplyToMessageListenerContainer
setReplyErrorHandler
RabbitTemplate
消息转换
我们引入了一个新功能,以支持将消息从 XML 格式转换为 XML 格式。
有关更多信息,请参见 Jackson2XmlMessageConverter
。Jackson2XmlMessageConverter
管理 REST API
现在已弃用,取而代之的是直接(或)用法。
有关详细信息,请参阅管理 REST API。RabbitManagementTemplate
com.rabbitmq.http.client.Client
com.rabbitmq.http.client.ReactorNettyClient
@RabbitListener
变化
侦听器容器工厂现在可以配置为发送回复时使用的 a 和 (可选)。
有关详细信息,请参阅启用侦听器终端节点注释。RetryTemplate
RecoveryCallback
异步返回@RabbitListener
@RabbitListener
方法现在可以返回 或 。
有关更多信息,请参见异步@RabbitListener
返回类型。ListenableFuture<?>
Mono<?>
连接工厂 Bean 更改
默认情况下,now 调用 .
若要恢复到以前的行为,请将属性设置为 。RabbitConnectionFactoryBean
enableHostnameVerification()
enableHostnameVerification
false
连接工厂更改
现在无条件地禁用底层 RabbitMQ 中的自动恢复,即使在构造函数中提供了预配置的实例也是如此。
虽然已经采取措施使Spring AMQP与自动恢复兼容,但出现了某些仍然存在问题的极端情况。
Spring AMQP 从 1.0.0 开始就有了自己的恢复机制,不需要使用客户端提供的恢复。
虽然在构建后仍然可以启用该功能(使用 ),但我们强烈建议您不要这样做。
如果在直接使用客户端工厂(而不是使用 Spring AMQP 组件)时需要自动恢复连接,建议使用单独的 RabbitMQ。CachingConnectionFactory
ConnectionFactory
cachingConnectionFactory.getRabbitConnectionFactory()
.setAutomaticRecoveryEnabled()
CachingConnectionFactory
ConnectionFactory
侦听器容器更改
现在,默认值会完全丢弃在存在标头时导致致命错误的消息。
有关详细信息,请参阅异常处理。ConditionalRejectingErrorHandler
x-death
立即重新排队
引入了一个新功能,用于通知侦听器容器必须将消息重新排队。
若要使用此功能,需要添加新的实现。ImmediateRequeueAmqpException
ImmediateRequeueMessageRecoverer
有关详细信息,请参阅消息侦听器和异步案例。