本节介绍版本 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) 现在是一个可选的依赖项,将不再显示为传递依赖项。
该模块现在是模块中的编译依赖项,以便在只有一个模块时获得 AMQP 组件的完整测试实用程序堆栈,从而获得更好的目标应用程序开发体验。spring-rabbit-junit
spring-rabbit-test
spring-rabbit-test
[[-breaking-api-changes]] == “中断”API 更改
JUnit (5) 现在返回一个实例,而不是一个 ,它依赖于 JUnit 4。
它具有相同的 API,因此只需更改任何引用的类名即可。
有关更多信息,请参见 JUnit5 条件。RabbitAvailableCondition.getBrokerRunning()
BrokerRunningSupport
BrokerRunning
@RabbitListener变更
现在,您可以在每个侦听器上配置一个,覆盖出厂配置,以便更轻松地识别与侦听器关联的线程。
现在,您可以使用注释的属性覆盖容器工厂的属性。
有关详细信息,请参阅重写容器工厂属性。executor
acknowledgeMode
ackMode
使用批处理时,方法现在可以在一次调用中接收完整的一批消息,而不是一次获取一条消息。@RabbitListener
一次接收一条批处理消息时,最后一条消息的 message 属性设置为 true。isLastInBatch
此外,收到的批处理消息现在包含标头。amqp_batchSize
侦听器还可以使用在 中创建的批处理,即使该批处理不是由生产者创建的。
有关详细信息,请参阅选择容器。SimpleMessageListenerContainer
Spring Data Projection 接口现在受 .
有关更多信息,请参见使用 Spring 数据投影接口。Jackson2JsonMessageConverter
如果没有属性,则现在假定内容为 JSON,或者它是默认值 ()。
有关详细信息,请参阅从消息
转换。Jackson2JsonMessageConverter
contentType
application/octet-string
同样地。如果没有属性,则现在假定内容为 XML,或者它是默认值 ()。
有关更多信息,请参见 Jackson2XmlMessageConverter
。Jackson2XmlMessageConverter
contentType
application/octet-string
当方法返回结果时,Bean 和 现在在回复消息属性中可用。
这允许配置,例如,在回复中设置标头,以指示在服务器上调用了哪个方法。
有关详细信息,请参阅回复管理。@RabbitListener
Method
beforeSendReplyMessagePostProcessor
现在,您可以配置 a 以在发送回复消息之前对其进行修改。
有关详细信息,请参阅回复管理。ReplyPostProcessor
AMQP 日志记录追加程序更改
Log4J 和 Logback 现在支持 SSL 选项。AmqpAppender
verifyHostname
此外,现在可以将这些附加程序配置为不将 MDC 条目添加为标头。
引入了布尔选项来配置此类行为。addMdcAsHeaders
附加者现在支持该属性。SaslConfig
有关详细信息,请参阅日志记录子系统 AMQP Appender。
MessageListenerAdapter 更改
现在提供了一种新方法来构建要传递到目标侦听器的参数数组,并且不推荐使用旧方法。
有关更多信息,请参见 MessageListenerAdapter
。MessageListenerAdapter
buildListenerArguments(Object, Channel, Message)
[[交换/队列声明更改]] == 交换/队列声明更改
用于创建和用于声明的对象的 和 fluent API 现在支持“众所周知”的参数。
有关详细信息,请参阅用于队列和 Exchange 的构建器 API。ExchangeBuilder
QueueBuilder
Exchange
Queue
RabbitAdmin
具有新属性。
有关详细信息,请参阅条件声明。RabbitAdmin
explicitDeclarationsOnly
连接工厂更改
具有新属性。
提供代理节点地址列表时,该列表将在创建连接之前进行随机排序,以便尝试连接的顺序是随机的。
有关更多信息,请参阅连接到集群。CachingConnectionFactory
shuffleAddresses
使用 Publisher 确认并返回时,现在会在连接工厂的 .
这避免了从回调中执行 rabbit 操作时库中可能出现的死锁。
有关详细信息,请参阅相关发布者确认和退货。executor
amqp-clients
此外,发布者确认类型现在使用枚举指定,而不是两个互斥的 setter 方法。ConfirmType
现在,启用 SSL 时默认使用 TLS 1.2。
有关更多信息,请参见 RabbitConnectionFactoryBean
和配置 SSL。RabbitConnectionFactoryBean
新的 MessagePostProcessor 类
当消息内容编码设置为 时,添加了类 和 以分别支持压缩和解压缩。DeflaterPostProcessor
InflaterPostProcessor
deflate
其他更改
对象(用于声明多个队列、交换、绑定)现在为每种类型都有一个过滤的 getter。
有关更多信息,请参见声明 Exchange、Queues 和 Bindings 的集合。Declarables
现在,您可以在处理每个 Bean 的声明之前对其进行自定义。
有关更多信息,请参见交换、队列和绑定的自动声明。Declarable
RabbitAdmin
singleActiveConsumer()
已添加到 to set the queue 参数中。
有关详细信息,请参阅用于队列和 Exchange 的构建器 API。QueueBuilder
x-single-active-consumer
现在,使用而不是 来映射具有类型值的出站标头。
有关更多信息,请参见消息属性转换器。Class<?>
getName()
toString()
现在支持恢复失败的生产者创建的批次。 有关详细信息,请参阅使用 Batch 侦听器重试。