3.0 相较于 2.4 的变化

Java 17, Spring Framework 6.0

此版本要求 Spring Framework 6.0 和 Java 17

远程处理

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

观测

现在支持使用 Micrometer 启用计时器和跟踪的观测功能。更多信息请参见 Micrometer 观测

Native Images

提供了创建 Native Images 的支持。更多信息请参见 Native Images

AsyncRabbitTemplate

AsyncRabbitTemplate 现在返回 CompletableFuture 而不是 ListenableFuture。更多信息请参见 Async Rabbit Template

Stream 支持的变化

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

现在支持超级流 (super streams) 和其上的单一活跃消费者 (single active consumers)。

更多信息请参见 使用 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 库来确定哪个节点是队列的 leader。更多信息请参见 队列亲和性 (Queue Affinity) 和 LocalizedQueueConnectionFactory