1.3 版本以来相对于 1.2 版本的变更

监听器并发性

监听器容器现在支持基于工作负载动态调整消费者数量,或者您可以在不停止容器的情况下通过编程方式更改并发性。详见 监听器并发性

监听器队列

监听器容器现在允许在运行时修改其监听的队列。此外,如果至少有一个配置的队列可用,容器现在就可以启动。详见 监听器容器队列

此监听器容器现在在启动期间重新声明任何 auto-delete 队列。详见 auto-delete 队列

消费者优先级

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

独占消费者

您现在可以将 SimpleMessageListenerContainer 配置为单个 exclusive 消费者,阻止其他消费者监听队列。详见 独占消费者

Rabbit Admin

您现在可以让 broker 生成队列名称,而无论 durableautoDeleteexclusive 设置如何。详见 配置 Broker

Direct Exchange 绑定

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

AmqpTemplate 变更

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

RabbitTemplate 现在支持配置 RetryTemplate,以便在 broker 不可用时尝试重试(可选择带有退避策略)。有关更多信息,请参阅 添加重试功能

缓存连接工厂

您现在可以将缓存连接工厂配置为缓存 Connection 实例及其 Channel 实例,而不是使用单个连接仅缓存 Channel 实例。详见 连接和资源管理

绑定参数

<exchange 现在支持解析 子元素。您现在可以通过 key/value 属性对(用于匹配单个 header)或 子元素(允许匹配多个 header)来配置 。这些选项是互斥的。详见 Headers Exchange

路由连接工厂

引入了一个新的 SimpleRoutingConnectionFactory。它允许配置 ConnectionFactory 映射,以确定运行时使用的目标 ConnectionFactory。详见 路由连接工厂

MessageBuilderMessagePropertiesBuilder

现在提供了用于构建消息或消息属性的“流畅 API”。详见 Message Builder API

RetryInterceptorBuilder 变更

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

添加了 RepublishMessageRecoverer

提供了这个新的 MessageRecoverer,用于在重试耗尽时将失败的消息发布到另一个队列(包括 header 中的堆栈跟踪信息)。详见 消息监听器和异步情况

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

监听器容器中添加了一个默认的 ConditionalRejectingErrorHandler。该错误处理器会检测到致命的消息转换问题,并指示容器拒绝该消息,以防止 broker 不断地重新投递不可转换的消息。详见 异常处理

监听器容器 missingQueuesFatal 属性 (自 1.3.5 版起)

SimpleMessageListenerContainer 现在有一个名为 missingQueuesFatal 的属性(默认值:true)。以前,缺少队列总是致命的。详见 消息监听器容器配置