1.5 相较 1.4 的变化

不再支持 spring-erlang

spring-erlang jar 不再包含在发行版中。请改用 RabbitMQ REST API

CachingConnectionFactory 更改

CachingConnectionFactory 中的空地址属性

以前,如果连接工厂配置了主机和端口,但同时提供了空的 addresses 字符串,则会忽略主机和端口。现在,空的 addresses 字符串与 null 相同处理,并使用主机和端口。

URI 构造函数

CachingConnectionFactory 增加了一个带有 URI 参数的构造函数,用于配置代理连接。

连接重置

新增了一个名为 resetConnection() 的方法,允许用户重置连接(或多个连接)。例如,您可以使用此方法在故障转移到辅助代理后重新连接到主代理。这 影响进程中的操作。现有的 destroy() 方法功能完全相同,但新方法的名称不那么令人生畏。

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

当监听器容器消费者启动时,它们会尝试被动声明队列以确保它们在代理上可用。以前,如果这些声明失败(例如,因为队列不存在)或当 HA 队列正在移动时,重试逻辑固定为三次重试,间隔为五秒。如果队列仍然不存在,则行为由 missingQueuesFatal 属性控制(默认值:true)。此外,对于配置为从多个队列监听的容器,如果只有部分队列可用,则消费者会以固定的 60 秒间隔重试缺失的队列。

declarationRetriesfailedDeclarationRetryIntervalretryDeclarationInterval 属性现在可配置。有关更多信息,请参阅 消息监听器容器配置

类包更改

RabbitGatewaySupport 类已从 o.s.amqp.rabbit.core.support 移至 o.s.amqp.rabbit.core

DefaultMessagePropertiesConverter 更改

您现在可以配置 DefaultMessagePropertiesConverter 来确定转换为 String 而不是 DataInputStreamLongString 的最大长度。转换器有一个替代构造函数,它将该值作为限制。以前,此限制硬编码为 1024 字节。(在 1.4.4 中也可用)。

@RabbitListener 改进

@RabbitListener@QueueBinding

bindings 属性已添加到 @RabbitListener 注解中,与 queues 属性互斥,允许指定队列、其交换以及由 RabbitAdmin 在代理上声明的绑定。

@SendTo 中的 SpEL

@RabbitListener 的默认回复地址 (@SendTo) 现在可以是 SpEL 表达式。

通过属性指定多个队列名称

您现在可以使用 SpEL 和属性占位符的组合为监听器指定多个队列。

有关更多信息,请参阅 注解驱动的监听器端点

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

您现在可以声明定义这些实体集合的 bean,RabbitAdmin 会在建立连接时将内容添加到它声明的实体列表中。有关更多信息,请参阅 声明交换、队列和绑定集合

RabbitTemplate 更改

添加 reply-address

reply-address 属性已添加到 <rabbit-template> 组件中,作为 reply-queue 的替代。有关更多信息,请参阅 请求/回复消息。(在 1.4.4 中也可用作 RabbitTemplate 上的 setter)。

阻塞 receive 方法

RabbitTemplate 现在支持 receiveconvertAndReceive 方法中的阻塞。有关更多信息,请参阅 轮询消费者

sendAndReceive 方法的强制性

当使用 sendAndReceiveconvertSendAndReceive 方法时,如果请求消息无法送达,则调用线程会抛出 AmqpMessageReturnedException。有关更多信息,请参阅 回复超时

不正确的回复监听器配置

框架尝试在使用命名回复队列时验证回复监听器容器的正确配置。

有关更多信息,请参阅 回复监听器容器

添加 RabbitManagementTemplate

引入了 RabbitManagementTemplate,用于通过其 管理插件 提供的 REST API 监视和配置 RabbitMQ 代理。有关更多信息,请参阅 RabbitMQ REST API

监听器容器 Bean 名称 (XML)

<listener-container/> 元素上的 id 属性已移除。从这个版本开始,<listener/> 子元素上的 id 将单独用于命名为每个监听器元素创建的监听器容器 bean。

正常的 Spring bean 名称覆盖将适用。如果稍后解析的 <listener/>id 与现有 bean 的 id 相同,则新定义将覆盖现有定义。以前,bean 名称由 <listener-container/><listener/> 元素的 id 属性组成。

迁移到此版本时,如果您在 <listener-container/> 元素上具有 id 属性,请将其移除并改为在子 <listener/> 元素上设置 id

然而,为了支持将容器作为一组启动和停止,添加了一个新的 group 属性。当定义此属性时,由此元素创建的容器将添加到名称为此的 bean 中,类型为 Collection<SimpleMessageListenerContainer>。您可以遍历此组以启动和停止容器。

类级别 @RabbitListener

@RabbitListener 注解现在可以应用于类级别。与新的 @RabbitHandler 方法注解一起,这允许您根据有效负载类型选择处理程序方法。有关更多信息,请参阅 多方法监听器

SimpleMessageListenerContainer:回退支持

SimpleMessageListenerContainer 现在可以提供一个 BackOff 实例,用于消费者启动恢复。有关更多信息,请参阅 消息监听器容器配置

通道关闭日志记录

引入了一种控制通道关闭日志级别的新机制。请参阅 日志通道关闭事件

应用程序事件

当消费者失败时,SimpleMessageListenerContainer 现在会发出应用程序事件。有关更多信息,请参阅 消费者事件

消费者标签配置

以前,异步消费者的消费者标签由代理生成。在此版本中,现在可以向监听器容器提供命名策略。请参阅 消费者标签

使用 MessageListenerAdapter

MessageListenerAdapter 现在支持队列名称(或消费者标签)到方法名称的映射,以根据接收消息的队列确定要调用的委托方法。

添加 LocalizedQueueConnectionFactory

LocalizedQueueConnectionFactory 是一个新的连接工厂,它连接到集群中实际存在镜像队列的节点。

匿名队列命名

从 1.5.3 版本开始,您现在可以控制 AnonymousQueue 名称的生成方式。有关更多信息,请参阅 AnonymousQueue

© . This site is unofficial and not affiliated with VMware.