Changes in 1.3 Since 1.2

  • 基于工作负载动态扩展侦听器并发性

  • 允许在运行时修改侦听器队列

  • 引入用户参数以设置 x-priority

  • 允许配置单个排他用户以阻止其他用户侦听队列

  • 提供同步接收和回复方法

  • 支持配置重试模板以尝试在代理不可用时进行重试

  • 允许缓存连接和通道实例,而不是仅缓存通道实例

  • 支持在 exchange 绑定中解析绑定参数

  • 提供 Fluent API 用于构建消息和消息属性

  • 引入一个新的默认错误处理程序,用于检测致命的消息转换问题

Listener Concurrency

现在,侦听器容器支持基于工作负载动态扩展使用者数量,或者您可以以编程方式更改并发而不停止容器。请参阅 Listener Concurrency

Listener Queues

现在,侦听器容器允许修改其侦听的队列的运行时。此外,只要容器的一个配置队列可用,容器现在就会启动。请参阅 Listener Queues

该侦听器容器现在在启动期间重新声明任何自动删除队列。参见 xref:amqp/receiving-messages/async-consumer.adoc#lc-auto-delete[auto-delete 队列。

Consumer Priority

现在,侦听器容器支持使用者参数,允许设置 x-priority 参数。请参阅 Consumer Priority

Exclusive Consumer

现在,您可以使用单个 exclusive 使用者配置 SimpleMessageListenerContainer,以阻止其他使用者侦听该队列。请参阅 Exclusive Consumer

Rabbit Admin

现在,您可以让代理生成队列名称,而不管 durableautoDeleteexclusive 设置如何。请参阅 Configuring the Broker

Direct Exchange Binding

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

AmqpTemplate Changes

AmqpTemplate 现在提供几个同步 receiveAndReply 方法。这些方法由 RabbitTemplate 实现。有关详细信息,请参阅 [receiving-messages]

`RabbitTemplate`现在支持配置一个 `RetryTemplate`以在代理不可用时尝试重试(带有可选延迟策略)。有关详细信息,请参见 Adding Retry Capabilities

Caching Connection Factory

现在,您可以将缓存连接工厂配置为缓存 Connection 实例及其实 Channel 实例,而不是使用一个连接且只缓存 Channel 实例。请参阅 Connection and Resource Management

Binding Arguments

<exchange>`的 `<binding>`现在支持对 `<binding-arguments>`子元素进行解析。您现在可以使用 `key/value`属性对(匹配单个标头)或 `<binding-arguments>`子元素(允许在多个标头上进行匹配)配置 `<binding>`的 `<headers-exchange>。这些选项互斥。请参见 Headers Exchange

Routing Connection Factory

已引入一个新的 SimpleRoutingConnectionFactory。它允许配置 ConnectionFactories 映射,以确定在运行时要使用的目标 ConnectionFactory。请参阅 Routing Connection Factory

MessageBuilder and MessagePropertiesBuilder

现在提供了用于构建消息或消息属性的 “Fluent APIs”。请参见 Message Builder API

RetryInterceptorBuilder Change

现在提供了一个用于构建侦听容器重试拦截器的 “Fluent API”。请参见 Failures in Synchronous Operations and Options for Retry

RepublishMessageRecoverer Added

当重试耗尽时,提供了这个新的 `MessageRecoverer`来允许将失败的消息发布到另一个队列(在标头中包括堆栈跟踪信息)。请参见 Message Listeners and the Asynchronous Case

Default Error Handler (Since 1.3.2)

已将一个默认 `ConditionalRejectingErrorHandler`添加到侦听器容器中。此错误处理程序检测到致命的消息转换问题,并指示容器拒绝该消息,以防止代理连续重新传递不可转换消息。请参阅 Exception Handling

Listener Container 'missingQueuesFatal` Property (Since 1.3.5)

SimpleMessageListenerContainer`现在具有一个名为 `missingQueuesFatal`的属性(默认值: `true)。以前,缺少队列总是致命的。请参阅 Message Listener Container Configuration