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