3.0 相较于 2.4 的变更

Java 17,Spring Framework 6.0

此版本需要 Spring Framework 6.0 和 Java 17

远程调用

远程调用功能(使用 RMI)已不再支持。

观测

现在支持使用 Micrometer 启用计时器和跟踪的观测。有关更多信息,请参阅 Micrometer 观测

原生镜像

提供了创建原生镜像的支持。有关更多信息,请参阅 原生镜像

AsyncRabbitTemplate

AsyncRabbitTemplate 现在返回 CompletableFuture 而不是 ListenableFuture。有关更多信息,请参阅 异步 Rabbit 模板

Stream 支持变更

RabbitStreamOperationsRabbitStreamTemplate 方法现在返回 CompletableFuture 而不是 ListenableFuture

现在支持超级流及其上的单个活动消费者。

有关更多信息,请参阅 使用 RabbitMQ Stream 插件

@RabbitListener 变更

批量监听器现在可以消费 Collection<?> 以及 List<?>。批量消息适配器现在确保方法适合消费批次。当将容器工厂的 consumerBatchEnabled 设置为 true 时,batchListener 属性也会被设置为 true。有关更多信息,请参阅 @RabbitListener 与批量处理

MessageConverter 现在可以为 null 值返回 Optional.empty();这目前由 Jackson2JsonMessageConverter 实现。有关更多信息,请参阅 Message 转换

您现在可以通过容器工厂配置 ReplyPostProcessor,而不是通过 @RabbitListener 上的属性配置。有关更多信息,请参阅 回复管理

@RabbitListener(和 @RabbitHandler)方法现在可以声明为 Kotlin 的 suspend 函数。有关更多信息,请参阅 异步 @RabbitListener 返回类型

从 3.0.5 版本开始,具有异步返回类型的监听器(包括 Kotlin suspend 函数)在发生故障后会调用 RabbitListenerErrorHandler(如果已配置)。以前,错误处理程序仅在同步调用时被调用。

连接工厂变更

AbstractConnectionFactory 中的默认 addressShuffleMode 现在为 RANDOM。这会导致在提供多个地址时连接到随机主机。有关更多信息,请参阅 连接到集群

LocalizedQueueConnectionFactory不再使用RabbitMQ的http-client库来确定哪个节点是队列的领导者。更多信息请参见队列亲和性和LocalizedQueueConnectionFactory