1.3 版本相对于 1.2 版本的变化

监听器并发

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

监听器队列

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

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

消费者优先级

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

独占消费者

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

Rabbit 管理

您现在可以由代理生成队列名称,无论 durableautoDeleteexclusive 设置如何。 请参阅 配置代理

Direct 交换机绑定

以前,在 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>。 这些选项是互斥的。 请参阅 Headers 交换机

路由连接工厂

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

MessageBuilderMessagePropertiesBuilder

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

RetryInterceptorBuilder 更改

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

RepublishMessageRecoverer 已添加

提供了这个新的 MessageRecoverer,允许在重试耗尽时将失败的消息发布到另一个队列(在头部包含堆栈跟踪信息)。 请参阅 消息监听器和异步情况

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

监听器容器中添加了一个默认的 ConditionalRejectingErrorHandler。 此错误处理器检测致命的消息转换问题,并指示容器拒绝消息,以防止代理持续重新投递无法转换的消息。 请参阅 异常处理

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

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