跳到主要内容
版本:4.1.1

1.3 自 1.2 以来的变更

Doubao 中英对照 Changes in 1.3 Since 1.2

Listener 并发​

listener 容器现在支持根据工作负载动态缩放 consumer 数量,或者你可以在不停止容器的情况下以编程方式修改并发数。参见Listener 并发。

Listener 队列​

listener 容器现在允许在运行时修改其所监听的队列。此外,只要其配置的队列中至少有一个可用,容器即可启动。参见Listener 容器队列

该 listener 容器现在会在启动期间重新声明任何 auto-delete 队列。参见auto-delete 队列。

Consumer 优先级​

listener 容器现在支持 consumer 参数,允许设置 x-priority 参数。参见Consumer 优先级。

独占 Consumer​

现在可以将 SimpleMessageListenerContainer 配置为使用单个 exclusive consumer,从而阻止其他 consumer 监听该队列。参见独占 Consumer。

Rabbit Admin​

现在可以让 broker 生成队列名称,而无需考虑 durable、autoDelete 和 exclusive 设置。参见配置 Broker。

Direct Exchange 绑定​

此前,在 direct-exchange 配置的 binding 元素中省略 key 属性,会导致队列或 exchange 以空字符串作为 routing key 进行绑定。现在则以所提供的 Queue 或 Exchange 的名称进行绑定。如果你希望以空字符串 routing key 绑定,则需要指定 key=""。

AmqpTemplate 变更​

AmqpTemplate 现在提供多个同步的 receiveAndReply 方法。这些方法由 RabbitTemplate 实现。更多信息参见接收消息。

RabbitTemplate 现在支持配置 RetryTemplate,以便在 broker 不可用时尝试重试(可选退避策略)。更多信息参见添加重试能力。

缓存连接工厂​

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

绑定参数​

<exchange> 的 <binding> 现在支持解析 <binding-arguments> 子元素。现在可以用 key/value 属性对(匹配单个 header)或用 <binding-arguments> 子元素(允许匹配多个 header)来配置 <headers-exchange> 的 <binding>。这两种选项互斥。参见Headers Exchange。

路由连接工厂​

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

MessageBuilder 与 MessagePropertiesBuilder​

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

RetryInterceptorBuilder 变更​

现在提供用于构建 listener 容器重试拦截器的“Fluent API”。参见同步操作中的失败与重试选项。

新增 RepublishMessageRecoverer​

提供这个新的 MessageRecoverer,以便在重试耗尽时将失败消息发布到另一个队列(在 header 中包含堆栈跟踪信息)。参见消息监听器与异步情形。

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

为 listener 容器添加了默认的 ConditionalRejectingErrorHandler。该错误处理程序会检测致命的消息转换问题,并指示容器拒绝该消息,以防止 broker 不断重新投递无法转换的消息。参见异常处理。

Listener 容器 missingQueuesFatal 属性(自 1.3.5 起)​

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