1.5 相对于 1.4 的变化
spring-erlang 不再受支持
分发包中不再包含 spring-erlang jar。
请改用 RabbitMQ REST API。
CachingConnectionFactory 变化
控制容器队列声明行为的属性
当监听器容器消费者启动时,它们会尝试被动声明队列,以确保队列在代理上可用。
以前,如果这些声明失败(例如,因为队列不存在)或者当 HA 队列正在移动时,重试逻辑固定为三次重试,间隔五秒。
如果队列仍然不存在,则行为由 missingQueuesFatal 属性(默认值:true)控制。
此外,对于配置为监听多个队列的容器,如果只有部分队列可用,消费者会以固定的 60 秒间隔重试缺失的队列。
declarationRetries、failedDeclarationRetryInterval 和 retryDeclarationInterval 属性现在可配置。
有关更多信息,请参阅 消息监听器容器配置。
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 Broker。
有关更多信息,请参阅 RabbitMQ REST API。
监听器容器 Bean 名称 (XML)
<listener-container/> 元素上的 id 属性已被移除。
从本版本开始,<listener/> 子元素上的 id 独立用于命名为每个监听器元素创建的监听器容器 bean。
应用正常的 Spring bean 名称覆盖。
如果解析了一个具有与现有 bean 相同 id 的后续 <listener/>,则新定义会覆盖现有定义。
以前,bean 名称由 <listener-container/> 和 <listener/> 元素的 id 属性组成。
迁移到此版本时,如果您的 <listener-container/> 元素上有 id 属性,请将其移除,并在子 <listener/> 元素上设置 id。
但是,为了支持将容器作为组启动和停止,添加了一个新的 group 属性。
当定义此属性时,此元素创建的容器将添加到具有此名称的 bean 中,类型为 Collection<SimpleMessageListenerContainer>。
您可以遍历此组来启动和停止容器。
类级别 @RabbitListener
@RabbitListener 注解现在可以应用于类级别。
结合新的 @RabbitHandler 方法注解,这允许您根据有效负载类型选择处理程序方法。
有关更多信息,请参阅 多方法监听器。
SimpleMessageListenerContainer:回退支持
SimpleMessageListenerContainer 现在可以提供一个 BackOff 实例用于 consumer 启动恢复。
有关更多信息,请参阅 消息监听器容器配置。
通道关闭日志记录
引入了一种机制来控制通道关闭的日志级别。 请参阅 记录通道关闭事件。
应用程序事件
当消费者失败时,SimpleMessageListenerContainer 现在会发出应用程序事件。
有关更多信息,请参阅 消费者事件。
消费者标签配置
以前,异步消费者的消费者标签由代理生成。 在此版本中,现在可以向监听器容器提供命名策略。 请参阅 消费者标签。
匿名队列命名
从 1.5.3 版本开始,您现在可以控制 AnonymousQueue 名称的生成方式。
有关更多信息,请参阅 AnonymousQueue。