1.5 相较于 1.4 的变更
不再支持 spring-erlang
发行版中不再包含 spring-erlang
jar 包。请改用RabbitMQ REST API。
CachingConnectionFactory
变更
控制容器队列声明行为的属性
当监听器容器消费者启动时,它们会尝试被动声明队列以确保它们在代理上可用。以前,如果这些声明失败(例如,因为队列不存在)或 HA 队列正在移动时,重试逻辑固定为三次重试,每次间隔五秒。如果队列仍然不存在,则行为由 missingQueuesFatal
属性控制(默认值:true
)。此外,对于配置为从多个队列监听的容器,如果只有一部分队列可用,消费者会以 60 秒的固定间隔重试缺失的队列。
declarationRetries
、failedDeclarationRetryInterval
和 retryDeclarationInterval
属性现在可以配置。更多信息请参见消息监听器容器配置。
DefaultMessagePropertiesConverter
变更
现在可以配置 DefaultMessagePropertiesConverter
来确定将转换为 String
而不是 DataInputStream
的 LongString
的最大长度。转换器有一个替代构造函数,它将该值作为限制。以前,此限制硬编码为 1024
字节。(在 1.4.4 中也可用)。
@RabbitListener
改进
自动声明交换机、队列和绑定
现在可以声明定义这些实体集合的 Bean,并且在建立连接时,RabbitAdmin
会将这些内容添加到它声明的实体列表中。更多信息,请参见 声明交换机、队列和绑定的集合。
RabbitTemplate
的更改
添加 reply-address
<rabbit-template>
组件中添加了reply-address
属性,作为reply-queue
的替代方案。更多信息,请参见 请求/回复消息。(在 1.4.4 版本中,也作为 RabbitTemplate
的 setter 提供)。
阻塞式 receive
方法
RabbitTemplate
现在支持 receive
和 convertAndReceive
方法的阻塞功能。更多信息,请参见 轮询消费者。
sendAndReceive
方法中的强制标志 (mandatory)
当使用 sendAndReceive
和 convertSendAndReceive
方法时设置了mandatory
标志,如果无法传递请求消息,则调用线程会抛出 AmqpMessageReturnedException
异常。更多信息,请参见 回复超时。
添加 RabbitManagementTemplate
引入了 RabbitManagementTemplate
,可以使用其提供的 REST API 来监控和配置 RabbitMQ Broker 管理插件。更多信息,请参见 [management-rest-api]。
监听器容器 Bean 名称 (XML)
应用普通的 Spring Bean 名称覆盖。如果解析的后续 迁移到此版本时,如果您的 |
但是,为了支持将容器作为组启动和停止,添加了一个新的group
属性。当定义此属性时,此元素创建的容器将添加到具有此名称的 Bean 中,该 Bean 的类型为Collection<SimpleMessageListenerContainer>
。您可以迭代此组来启动和停止容器。
类级别的 @RabbitListener
@RabbitListener
注解现在可以应用于类级别。结合新的@RabbitHandler
方法注解,这允许您根据有效负载类型选择处理程序方法。更多信息,请参见 多方法监听器。
SimpleMessageListenerContainer
:回退支持
现在可以为SimpleMessageListenerContainer
提供BackOff
实例,以进行consumer
启动恢复。更多信息,请参见 消息监听器容器配置。
通道关闭日志记录
引入了一种控制通道关闭日志级别的机制。请参见 通道关闭日志记录。
应用程序事件
当消费者失败时,SimpleMessageListenerContainer
现在会发出应用程序事件。更多信息,请参见 消费者事件。
消费者标签配置
以前,异步消费者的消费者标签是由代理生成的。在本版本中,现在可以向监听器容器提供命名策略。请参见 消费者标签。
匿名队列命名
从 1.5.3 版本开始,您现在可以控制如何生成AnonymousQueue
名称。更多信息,请参见 AnonymousQueue
。