1.3 版本相对于 1.2 版本的变更
监听器并发
监听器容器现在支持根据工作负载动态调整消费者的数量,或者您可以在不停止容器的情况下以编程方式更改并发性。请参阅监听器并发性。
监听器队列
监听器容器现在允许在运行时修改其监听的队列。此外,如果至少有一个配置的队列可用,容器现在会启动。请参阅 监听器容器队列。
此监听器容器现在在启动期间会重新声明任何自动删除队列。请参阅自动删除队列。
消费者优先级
监听器容器现在支持消费者参数,允许设置 x-priority
参数。请参阅消费者优先级。
独占消费者
你现在可以将 SimpleMessageListenerContainer
配置为单个 exclusive
消费者,从而防止其他消费者监听队列。请参阅 独占消费者。
Rabbit Admin
现在,无论 durable
、autoDelete
和 exclusive
设置如何,您都可以让 broker 生成队列名称。请参阅 配置 Broker。
直接交换绑定
以前,在 direct-exchange
配置中,如果省略了 binding
元素的 key
属性,队列或交换器会以空字符串作为路由键进行绑定。现在,它将使用提供的 Queue
或 Exchange
的名称作为路由键进行绑定。如果你希望使用空字符串作为路由键进行绑定,需要显式指定 key=""
。
AmqpTemplate
变更
AmqpTemplate
现在提供了几个同步的 receiveAndReply
方法。这些方法由 RabbitTemplate
实现。更多信息请参阅 接收消息。
RabbitTemplate
现在支持配置 RetryTemplate
,以便在代理不可用时尝试重试(带有可选的退避策略)。更多信息请参阅添加重试功能。
缓存连接工厂
你现在可以配置缓存连接工厂来缓存 Connection
实例及其 Channel
实例,而不是使用单一连接并仅缓存 Channel
实例。详情请参阅 连接和资源管理。
绑定参数
<exchange>
的 <binding>
现在支持解析 <binding-arguments>
子元素。你现在可以通过 key/value
属性对(用于匹配单个 header)或 <binding-arguments>
子元素(允许匹配多个 header)来配置 <headers-exchange>
的 <binding>
。这些选项是互斥的。请参阅 Headers Exchange。
路由连接工厂
引入了一个新的 SimpleRoutingConnectionFactory
。它允许配置 ConnectionFactories
映射,以在运行时确定要使用的目标 ConnectionFactory
。请参阅 路由连接工厂。
MessageBuilder
和 MessagePropertiesBuilder
现在提供了用于构建消息或消息属性的“Fluent APIs”。请参阅消息构建器 API。
RetryInterceptorBuilder
变更
现在提供了一个用于构建监听器容器重试拦截器的“Fluent API”。请参阅同步操作中的失败及重试选项。
RepublishMessageRecoverer
新增
这个新的 MessageRecoverer
被提供用于在重试耗尽时,允许将失败的消息发布到另一个队列(包括在消息头中包含堆栈跟踪信息)。请参阅 消息监听器和异步情况。
默认错误处理程序(自 1.3.2 版本起)
默认的 ConditionalRejectingErrorHandler
已被添加到监听器容器中。此错误处理程序会检测到致命的消息转换问题,并指示容器拒绝该消息,以防止代理不断重新传递无法转换的消息。请参阅异常处理。
Listener Container 的 missingQueuesFatal
属性(自 1.3.5 版本起)
SimpleMessageListenerContainer
现在有一个名为 missingQueuesFatal
的属性(默认值为 true
)。以前,缺失队列总是致命的。请参阅消息监听器容器配置。