此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring AMQP 4.0.2spring-doc.cadn.net.cn

1.3 版本相较于 1.2 版本的变更

监听器并发性

监听器容器现在支持根据工作负载动态调整消费者数量,或者您可以在不中断容器的情况下程序化地更改并发数。请参阅 监听器并发spring-doc.cadn.net.cn

监听器队列

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

此监听器容器现在在启动期间重新声明任何自动删除的队列。请参阅 auto-delete 队列spring-doc.cadn.net.cn

消费者优先级

监听器容器现在支持消费者参数,允许设置 x-priority 参数。
参见 消费者优先级spring-doc.cadn.net.cn

专属消费者

现在,您可以通过单个 exclusive 消费者配置 SimpleMessageListenerContainer,从而阻止其他消费者监听该队列。请参阅 独占消费者spring-doc.cadn.net.cn

Rabbit Admin

现在,无论 durableautoDeleteexclusive 设置为何值,代理均可自动生成队列名称。
参见 配置代理spring-doc.cadn.net.cn

直接交换绑定

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

AmqpTemplate变更

AmqpTemplate 现在提供了多种同步 receiveAndReply 方法。
这些方法由 RabbitTemplate 实现。
有关更多信息,请参阅 接收消息spring-doc.cadn.net.cn

现在,RabbitTemplate 支持配置一个 RetryTemplate,以在代理不可用时尝试重试(可选带退避策略)。
有关更多信息,请参阅 添加重试功能spring-doc.cadn.net.cn

缓存连接工厂

现在,您可以配置缓存连接工厂,以缓存 Connection 个实例及其 Channel 个实例,而不是使用单个连接并仅缓存 Channel 个实例。
参见 连接与资源管理spring-doc.cadn.net.cn

绑定参数

现在,<binding><exchange> 支持解析 <binding-arguments> 子元素。
您现在可以通过 key/value 属性对(用于匹配单个头部)或通过 <binding-arguments> 子元素(允许匹配多个头部)来配置 <binding><headers-exchange>
这些选项互斥。
参见 头部交换spring-doc.cadn.net.cn

路由连接工厂

已引入一个新的 SimpleRoutingConnectionFactory。它允许配置 ConnectionFactories 映射,以在运行时确定所使用的目标 ConnectionFactory。参见 路由连接工厂spring-doc.cadn.net.cn

MessageBuilderMessagePropertiesBuilder

现在提供了用于构建消息或消息属性的“流畅式API”。
请参阅 消息构建器APIspring-doc.cadn.net.cn

RetryInterceptorBuilder变更

现在提供了一种用于构建监听器容器重试拦截器的“流畅式 API”。
请参阅 同步操作中的失败及重试选项spring-doc.cadn.net.cn

RepublishMessageRecoverer添加

此新的 MessageRecoverer 提供了在重试耗尽时,将失败的消息发布到另一个队列(包括堆栈跟踪信息在头部)的功能。
参见 消息监听器与异步情况spring-doc.cadn.net.cn

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

已向监听器容器添加默认值 ConditionalRejectingErrorHandler
此错误处理器可检测严重的消息转换问题,并指示容器拒绝该消息,以防止代理不断重新投递无法转换的消息。
请参阅 异常处理spring-doc.cadn.net.cn

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

The SimpleMessageListenerContainer now has a property called missingQueuesFatal (default: true).
Previously, missing queues were always fatal.
See 消息监听容器配置.spring-doc.cadn.net.cn