Changes in 1.5 Since 1.4
-
弃用spring-erlang jar,建议使用management-rest-api。
-
CachingConnectionFactory对空"addresses"属性的处理方式进行了更改。
-
添加了新的构造函数,允许使用URI配置代理连接。
-
引入了resetConnection()方法,用于重置连接。
-
侦听器容器队列声明行为的属性可配置。
-
RabbitGatewaySupport类已移动到新的软件包。
-
改进了DefaultMessagePropertiesConverter,允许配置转换为String的LongString的最大长度。
-
增强了@RabbitListener注解,支持queue binding规范和SpEL表达式。
-
可以通过Bean声明交换机、队列和绑定集合,并由RabbitAdmin自动声明。
-
RabbitTemplate支持在receive方法中进行阻塞。
-
引入RabbitManagementTemplate,用于通过REST API监视和配置RabbitMQ代理。
-
改进了@RabbitListener,支持类级别注解和多方法侦听器。
-
SimpleMessageListenerContainer增加了对BackOff支持。
spring-erlang
Is No Longer Supported
不再在发行版中包含 spring-erlang
jar。请改用 management-rest-api。
CachingConnectionFactory
Changes
Properties to Control Container Queue Declaration Behavior
当侦听器容器使用者启动时,他们尝试被动声明队列以确保它们在代理上可用。此前,如果这些声明失败(例如,因为队列不存在)或 HA 队列正在被移动,则重试逻辑固定在五秒间隔的三次重试尝试上。如果队列仍然不存在,则由 missingQueuesFatal
属性(默认值:true
)控制行为。此外,对于配置为从多个队列中侦听的容器,如果只有一部分队列可用,则使用者会以 60 秒的固定间隔重试丢失的队列。
declarationRetries
、failedDeclarationRetryInterval
和 retryDeclarationInterval
属性现在可配置。请参阅 Message Listener Container Configuration 了解更多信息。
DefaultMessagePropertiesConverter
Changes
您现在可以配置 DefaultMessagePropertiesConverter
以确定转换为 String
而不是 DataInputStream
的 LongString
的最大长度。该转换器有一个替代构造函数,它将该值作为限制。此前,此限制以硬编码方式设置为 1024
字节。(1.4.4 中也可用)。
@RabbitListener
Improvements
@QueueBinding
for @RabbitListener
bindings
属性已添加到 @RabbitListener
注解中,作为与 queues
属性互斥的,以允许规范要由 RabbitAdmin
在代理上声明的 queue
、它的 exchange
和 binding
。
Multiple Queue Names through Properties
您现在可以使用 SpEL 和属性占位符的组合为侦听器指定多个队列。
请参阅 Annotation-driven Listener Endpoints 了解更多信息。
Automatic Exchange, Queue, and Binding Declaration
您现在可以声明定义这些实体的集合的 Bean,且 RabbitAdmin
会在连接建立时将内容添加到新声明的实体列表中。有关详细信息,请参见 Declaring Collections of Exchanges, Queues, and Bindings。
RabbitTemplate
Changes
reply-address
Added
reply-address
属性已被添加到 <rabbit-template>
组件作为替代 reply-queue
。请参阅 Request/Reply Messaging 了解更多信息。(在 1.4.4 中也可以在 RabbitTemplate
上使用设置器)。
Blocking receive
Methods
RabbitTemplate
现在支持 receive
和 convertAndReceive
方法中的阻塞。请参阅 Polling Consumer 了解更多信息。
Mandatory with sendAndReceive
Methods
在使用 sendAndReceive
和 convertSendAndReceive
方法时如果设置了 mandatory
标志,那么如果无法传递请求消息,则调用线程将抛出 AmqpMessageReturnedException
。有关详细信息,请参见 Reply Timeout。
Improper Reply Listener Configuration
当使用命名回复队列时,该框架会尝试验证回复侦听器容器的正确配置。
有关详细信息,请参见 Reply Listener Container。
RabbitManagementTemplate
Added
已引入 RabbitManagementTemplate
来通过其 management plugin 提供的 REST API 监视和配置 RabbitMQ 经纪人。请参阅 [management-rest-api] 了解更多信息。
Listener Container Bean Names (XML)
<listener-container/>
元素上的 id
属性已删除。从这个版本开始,<listener/>
子元素上的 id
单独用于命名为每个侦听器元素创建的侦听器容器 Bean。
应用常规 Spring Bean 名称覆盖。如果解析到一个与现有 Bean 相同 id
的后续 <listener/>
,则新定义将覆盖现有定义。此前,Bean 名称是从 <listener-container/>
和 <listener/>
元素的 id
属性组合而成的。
迁移到此版本时,如果 <listener-container/>
元素上有 id
属性,请将其删除,而对子 <listener/>
元素设置 id
。
但是,为了支持将容器作为一组进行启动和停止,已添加新的 group
属性。当定义此属性时,此元素创建的容器将添加到名称与此相同、类型为 Collection<SimpleMessageListenerContainer>
的 Bean 中。您可以遍历此组来启动和停止容器。
Class-Level @RabbitListener
现在可以在类级别应用 @RabbitListener
注释。与新的 @RabbitHandler
方法注释结合使用时,您可以根据有效负载类型选择处理程序方法。请参阅 Multi-method Listeners 了解更多信息。
SimpleMessageListenerContainer
: BackOff Support
现在可以通过 BackOff
实例向 SimpleMessageListenerContainer
提供 consumer
启动恢复。有关详细信息,请参阅 Message Listener Container Configuration。
Channel Close Logging
已经引入了控制通道关闭日志级别的机制。请参阅 Channel Close Logging。
Application Events
现在,当消费者失败时,SimpleMessageListenerContainer
将发出应用程序事件。有关详细信息,请参阅 Consumer Events。
Consumer Tag Configuration
以前,异步消费者的消费者标签是由代理生成的。在此版本中,现在可以向侦听器容器提供命名策略。请参阅 Consumer Tags。
Anonymous Queue Naming
从 1.5.3 版本开始,您现在可以控制如何生成 AnonymousQueue
名称。有关详细信息,请参见 AnonymousQueue
。