|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring AMQP 4.0.2! |
2.2 版本相较于 2.1 版本的变更
本节描述了版本 2.1 和版本 2.2 之间的变更。
包变更
以下类/接口已从 org.springframework.amqp.rabbit.core.support 移动到 org.springframework.amqp.rabbit.batch:
-
BatchingStrategy -
MessageBatch -
SimpleBatchingStrategy
此外,ListenerExecutionFailedException 已从 org.springframework.amqp.rabbit.listener.exception 移动到 org.springframework.amqp.rabbit.support。
依赖变更
JUnit (4) 现在是可选依赖项,将不再作为传递依赖项出现。
模块 spring-rabbit-junit 现在作为 编译 依赖项包含在模块 spring-rabbit-test 中,以便在仅使用单一 spring-rabbit-test 的情况下,为 AMQP 组件提供完整的测试工具集,从而提升目标应用的开发体验。
“突破性” API 变更
JUnit (5) RabbitAvailableCondition.getBrokerRunning() 现在返回一个 BrokerRunningSupport 实例,而不是一个 BrokerRunning,后者依赖于 JUnit 4。它具有相同的 API,因此只需更改任何引用的类名即可。有关更多信息,请参阅 JUnit5 条件。
@RabbitListener 变更
现在,您可以在每个监听器上配置 executor,以覆盖工厂配置,从而更轻松地识别与监听器关联的线程。
现在,您可以使用注解的 ackMode 属性覆盖容器工厂的 acknowledgeMode 属性。
有关更多信息,请参阅 覆盖容器工厂属性。
在使用 批处理 时,@RabbitListener 方法现在可以在一次调用中接收完整的一批消息,而无需逐个获取。
在逐个接收批处理消息时,最后一则消息的 isLastInBatch 消息属性被设置为 true。
此外,现在接收到的批量消息包含 amqp_batchSize 头部。
监听器还可以消费在 SimpleMessageListenerContainer 中创建的批次,即使该批次并非由生产者创建。有关更多信息,请参阅 选择容器。
Spring Data 投影接口现已由 Jackson2JsonMessageConverter 支持。有关更多信息,请参阅 使用 Spring Data 投影接口。
当 Jackson2JsonMessageConverter 现在假设内容为 JSON,如果不存在 contentType 属性,或者它是默认值(application/octet-string)。
同样,Jackson2XmlMessageConverter 现在会假设内容为 XML,前提是不存在 contentType 属性,或者它为默认值(application/octet-string)。
有关更多信息,请参阅 Jackson2XmlMessageConverter。
当 @RabbitListener 方法返回结果时,bean 和 Method 现在可在回复消息属性中使用。这允许配置一个 beforeSendReplyMessagePostProcessor,例如在回复中设置一个头信息,以指示服务器上调用了哪个方法。有关更多信息,请参阅 回复管理。
现在,您可以配置一个 ReplyPostProcessor,以便在发送回复消息前对其进行修改。
有关更多信息,请参阅 回复管理。
AMQP 日志追加器变更
Log4J 和 Logback 的 AmqpAppender 版本现在支持 verifyHostname SSL 选项。
此外,这些附加组件现在可以配置为不将 MDC 条目作为请求头添加。addMdcAsHeaders 布尔选项已引入,用于配置此类行为。
附加组件现在支持 SaslConfig 属性。
请参阅 日志子系统 AMQP Appender 以获取更多信息。
MessageListenerAdapter 的更改
The MessageListenerAdapter provides now a new buildListenerArguments(Object, Channel, Message) method to build an array of arguments to be passed into target listener and an old one is deprecated. See MessageListenerAdapter for more information.
交换器/队列声明变更
用于通过 RabbitAdmin 声明创建 Exchange 和 Queue 对象的 ExchangeBuilder 和 QueueBuilder 流式 API 现在支持“常见”参数。有关更多信息,请参阅 队列和交换器的构建器 API。
属性 RabbitAdmin 新增了一个属性 explicitDeclarationsOnly。
有关更多信息,请参阅 条件声明。
连接工厂变更
属性 CachingConnectionFactory 新增了一个属性 shuffleAddresses。在提供代理节点地址列表时,该列表会在建立连接前进行随机打乱,以确保尝试连接的顺序是随机的。有关更多信息,请参阅 连接到集群。
在使用发布者确认和返回时,回调现在将在连接工厂的 executor 上调用。这可避免在您从回调内部执行 Rabbit 操作时,amqp-clients 库中可能出现的死锁问题。有关更多信息,请参阅 带关联的发布者确认和返回。
此外,发布者确认类型现在通过 ConfirmType 枚举指定,而不是通过两种互斥的setter方法。
其他变更
The Declarables object(用于声明多个队列、交换机和绑定关系)现在为每种类型提供了过滤后的getter方法。
有关更多信息,请参阅声明交换机、队列和绑定的集合。
现在,您可以在 Declarable Bean 被 RabbitAdmin 处理其声明之前对其进行自定义。
有关更多信息,请参阅 自动声明交换机、队列和绑定。
singleActiveConsumer() 已添加到 QueueBuilder 中,以设置 x-single-active-consumer 队列参数。
有关更多信息,请参阅 队列和交换器的 Builder API。
出站头信息中值类型为 Class<?> 的现在使用 getName() 进行映射,而非 toString()。
有关更多信息,请参阅 消息属性转换器。
已支持恢复失败的生产者创建的消息批次。
详情请参阅 使用批处理监听器重试。