1.5 版本相较于 1.4 版本的变更

spring-erlang已不再受支持

文件 spring-erlang jar 已不再包含在发行版中。
请改用 RabbitMQ REST APIspring-doc.cadn.net.cn

CachingConnectionFactory变更

空地址属性CachingConnectionFactory

之前,如果连接工厂配置了主机和端口,但同时为addresses提供了一个空字符串,则主机和端口会被忽略。现在,空的addresses字符串与null具有相同处理方式,主机和端口将被使用。spring-doc.cadn.net.cn

URI 构造函数

CachingConnectionFactory 还包含一个额外的构造函数,带有一个 URI 参数,用于配置代理连接。spring-doc.cadn.net.cn

连接重置

已添加一种名为 resetConnection() 的新方法,用于重置连接(或多个连接)。
例如,您可使用此方法在故障转移至备用代理后重新连接到主代理。
此操作会影响现有的 destroy() 方法实现完全相同的功能,但新方法的名称更为友好、不易令人望而却步。spring-doc.cadn.net.cn

控制容器队列声明行为的属性

当监听器容器消费者启动时,它们会尝试被动声明队列,以确保这些队列在代理上可用。之前,如果这些声明失败(例如,因为队列不存在)或在高可用性(HA)队列迁移过程中,重试逻辑固定为在五秒间隔下进行三次重试。如果队列仍然不存在,则由 missingQueuesFatal 属性控制其行为(默认值:true)。此外,对于配置为从多个队列监听的容器,若仅部分队列可用,消费者将按固定的 60 秒间隔重试缺失的队列。spring-doc.cadn.net.cn

属性 declarationRetriesfailedDeclarationRetryIntervalretryDeclarationInterval 现在可配置。消息监听容器配置 获取更多信息。spring-doc.cadn.net.cn

类包变更

The RabbitGatewaySupport class has been moved from o.s.amqp.rabbit.core.support to o.s.amqp.rabbit.core.spring-doc.cadn.net.cn

DefaultMessagePropertiesConverter变更

现在,您可以配置 DefaultMessagePropertiesConverter 来确定将 LongString 转换为 String 还是 DataInputStream 的最大长度。
转换器提供了一个可接受限制值作为参数的备选构造函数。
此前,该限制值被硬编码为 1024 字节。
(同样适用于 1.4.4 版本)。spring-doc.cadn.net.cn

@RabbitListener改进

@QueueBinding对于@RabbitListener

属性 bindings 已添加到 @RabbitListener 注解中,以与 queues 属性互斥,从而允许通过 Broker 上的 RabbitAdmin 指定 queue、其 exchangebinding 的声明。spring-doc.cadn.net.cn

SpEL 在@SendTo

默认回复地址(@SendTo)现在可以是一个 SpEL 表达式。@RabbitListenerspring-doc.cadn.net.cn

通过属性设置多个队列名称

现在,您可以结合使用 SpEL 和属性占位符来为监听器指定多个队列。spring-doc.cadn.net.cn

请参阅 注解驱动的监听器端点 以获取更多信息。spring-doc.cadn.net.cn

自动交换、队列和绑定声明

现在,您可以声明定义这些实体集合的 Bean,而 RabbitAdmin 会在建立连接时将内容添加到其所声明的实体列表中。有关更多信息,请参阅 声明交换、队列和绑定的集合spring-doc.cadn.net.cn

RabbitTemplate变更

reply-address添加

属性 reply-address 已添加到组件 <rabbit-template> 中,作为替代的 reply-queue请求/回复消息传递 以获取更多信息。(在 1.4.4 版本中也可通过 RabbitTemplate 的 setter 方法使用)。spring-doc.cadn.net.cn

阻塞receive方法

RabbitTemplate 现在支持在 receiveconvertAndReceive 方法中进行阻塞操作。
有关更多信息,请参阅 轮询消费者spring-doc.cadn.net.cn

必填项sendAndReceive方法

当使用 sendAndReceiveconvertSendAndReceive 方法时,若设置 mandatory 标志,则调用线程在请求消息无法送达时会抛出 AmqpMessageReturnedException。有关更多信息,请参阅 回复超时spring-doc.cadn.net.cn

错误的回复监听器配置

该框架在使用命名回复队列时,尝试验证回复监听器容器的正确配置。spring-doc.cadn.net.cn

请参阅 回复监听器容器 以获取更多信息。spring-doc.cadn.net.cn

RabbitManagementTemplate添加

已引入 RabbitManagementTemplate,以通过其 管理插件 提供的 REST API 监控和配置 RabbitMQ 代理。有关更多信息,请参阅 RabbitMQ REST APIspring-doc.cadn.net.cn

监听器容器 Bean 名称(XML)

元素上的id属性已被移除。从本版本开始,<listener/>子元素上的id属性单独用于为每个监听器元素创建的监听器容器bean命名。spring-doc.cadn.net.cn

正常的 Spring Bean 名称覆盖规则将被应用。如果后续解析的 <listener/> 具有与现有 Bean 相同的 id,则新的定义将覆盖现有的定义。此前,Bean 名称是通过 <listener-container/><listener/> 元素的 id 属性组合而成的。spring-doc.cadn.net.cn

在迁移到此版本时,如果您在 id 元素上设置了 <listener-container/> 属性,请将其删除,并改而在子 <listener/> 元素上设置 idspring-doc.cadn.net.cn

然而,为了支持以组为单位启动和停止容器,新增了一个 group 属性。当此属性被定义时,由该元素创建的容器将被添加到一个名称为此的 Bean 中,其类型为 Collection<SimpleMessageListenerContainer>。您可以遍历该组来启动和停止容器。spring-doc.cadn.net.cn

类级别@RabbitListener

注解 @RabbitListener 现在可以在类级别上使用。结合新的 @RabbitHandler 方法注解,您可以根据有效载荷类型选择处理方法。有关更多信息,请参见 多方法监听器spring-doc.cadn.net.cn

SimpleMessageListenerContainer: 重试支持

现在,SimpleMessageListenerContainer 可以在 consumer 启动恢复过程中提供一个 BackOff 实例。有关更多信息,请参阅 消息监听器容器配置spring-doc.cadn.net.cn

通道关闭日志记录

已引入一种机制,用于控制通道关闭的日志级别。请参阅 记录通道关闭事件spring-doc.cadn.net.cn

应用程序事件

当消费者失败时,SimpleMessageListenerContainer 现在会发出应用事件。消费者事件 获取更多信息。spring-doc.cadn.net.cn

消费者标签配置

以前,异步消费者的消费者标签由代理生成。此版本中,现在可以为监听器容器提供命名策略。详见 消费者标签spring-doc.cadn.net.cn

使用MessageListenerAdapter

现在,MessageListenerAdapter 支持一个队列名称(或消费者标签)到方法名称的映射,以根据消息来自哪个队列来确定调用哪个委托方法。spring-doc.cadn.net.cn

LocalizedQueueConnectionFactory添加

LocalizedQueueConnectionFactory 是一个新的连接工厂,用于连接到集群中实际存在镜像队列的节点。spring-doc.cadn.net.cn

匿名队列命名

从版本 1.5.3 开始,您现在可以控制 AnonymousQueue 名称的生成方式。AnonymousQueue 以获取更多信息。spring-doc.cadn.net.cn