3.0 相较于 2.4 的变化

Java 17, Spring Framework 6.0

此版本需要 Spring Framework 6.0 和 Java 17

远程调用

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

观测

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

原生镜像

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

AsyncRabbitTemplate

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

流支持变化

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

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

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

@RabbitListener 变化

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

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

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

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

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

连接工厂变化

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

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