1.3 相较于 1.2 的更改

监听器并发

监听器容器现在支持基于工作负载动态缩放消费者数量,或者您可以在不停止容器的情况下以编程方式更改并发性。请参阅 监听器并发

监听器队列

监听器容器现在允许在运行时修改其监听的队列。此外,如果其配置的队列中至少有一个可用,则容器现在会启动。请参阅 监听器队列

此监听器容器现在会在启动期间重新声明任何自动删除队列。请参阅 auto-delete 队列

消费者优先级

监听器容器现在支持消费者参数,允许设置 x-priority 参数。请参阅 消费者优先级

独占消费者

您现在可以使用单个 exclusive 消费者配置 SimpleMessageListenerContainer,防止其他消费者监听队列。请参阅 独占消费者

Rabbit Admin

您现在可以使代理生成队列名称,而不管 durableautoDeleteexclusive 设置如何。请参阅 配置代理

直接交换绑定

以前,从 direct-exchange 配置的 binding 元素中省略 key 属性会导致队列或交换机以空字符串作为路由键绑定。现在它与提供的 QueueExchange 的名称绑定。如果您希望使用空字符串路由键绑定,则需要指定 key=""

AmqpTemplate 更改

AmqpTemplate 现在提供了几种同步 receiveAndReply 方法。这些方法由 RabbitTemplate 实现。有关更多信息,请参阅 [接收消息]

RabbitTemplate 现在支持配置 RetryTemplate 以尝试重试(可选的回退策略),以应对代理不可用。有关更多信息,请参阅 添加重试功能

缓存连接工厂

您现在可以配置缓存连接工厂来缓存 Connection 实例及其 Channel 实例,而不是使用单个连接并仅缓存 Channel 实例。请参阅 连接和资源管理

绑定参数

<exchange><binding> 现在支持解析 <binding-arguments> 子元素。您现在可以使用 key/value 属性对(匹配单个标头)或 <binding-arguments> 子元素(允许匹配多个标头)来配置 <headers-exchange><binding>。这些选项是互斥的。请参阅 标头交换

路由连接工厂

引入了新的 SimpleRoutingConnectionFactory。它允许配置 ConnectionFactories 映射,以确定在运行时使用的目标 ConnectionFactory。请参阅 路由连接工厂

MessageBuilderMessagePropertiesBuilder

现在提供了用于构建消息或消息属性的“流畅 API”。请参见消息构建器 API

RetryInterceptorBuilder变更

现在提供了用于构建侦听器容器重试拦截器的“流畅 API”。请参见同步操作中的故障和重试选项

添加了RepublishMessageRecoverer

提供此新的MessageRecoverer,以便在重试耗尽时将失败的消息发布到另一个队列(包括标头中的堆栈跟踪信息)。请参见消息侦听器和异步情况

默认错误处理程序(自 1.3.2 版起)

已向侦听器容器添加默认的ConditionalRejectingErrorHandler。此错误处理程序检测致命的邮件转换问题,并指示容器拒绝邮件,以防止代理不断重新传递不可转换的邮件。请参见异常处理

侦听器容器“missingQueuesFatal”属性(自 1.3.5 版起)

SimpleMessageListenerContainer现在具有名为missingQueuesFatal的属性(默认值:true)。以前,缺少队列始终是致命的。请参见消息侦听器容器配置