此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring AMQP 3.2.6! |
自 2.1 以来 2.2 的变化
本节介绍 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 更改]]== “破坏性”API 更改
JUnit (5)RabbitAvailableCondition.getBrokerRunning()
现在返回一个BrokerRunningSupport
实例而不是BrokerRunning
,这取决于 JUnit 4。它具有相同的 API,因此只需更改任何引用的类名即可。有关更多信息,请参阅 JUnit5 条件。
@RabbitListener变化
您现在可以配置executor
,覆盖工厂配置,以便更轻松地识别与监听器关联的线程。您现在可以覆盖容器工厂的acknowledgeMode
属性替换为注释的ackMode
财产。 有关更多信息,请参阅覆盖容器工厂属性。
使用批处理时,@RabbitListener
方法现在可以在一次调用中接收完整的一批消息,而不是一次获取一条消息。
当一次接收一条批处理消息时,最后一条消息具有isLastInBatch
message 属性设置为 true。
此外,收到的批处理消息现在包含amqp_batchSize
页眉。
侦听器还可以使用SimpleMessageListenerContainer
,即使批次不是由生产者创建的。有关更多信息,请参阅选择容器。
Spring Data Projection 接口现在受Jackson2JsonMessageConverter
. 有关更多信息,请参阅使用 Spring Data Projection 接口。
这Jackson2JsonMessageConverter
如果没有contentType
属性,或者它是默认值 (application/octet-string
). 看从Message
了解更多信息。
同样地。 这Jackson2XmlMessageConverter
现在假设内容是 XML,如果没有contentType
属性,或者它是默认值 (application/octet-string
). 看Jackson2XmlMessageConverter
了解更多信息。
当@RabbitListener
方法返回一个结果,bean 和Method
现在在回复消息属性中可用。这允许配置beforeSendReplyMessagePostProcessor
例如,在回复中设置标头以指示在服务器上调用了哪个方法。有关更多信息,请参阅回复管理。
您现在可以配置ReplyPostProcessor
在发送回复消息之前对其进行修改。有关更多信息,请参阅回复管理。
AMQP 日志记录附加器更改
Log4J 和 LogbackAmqpAppender
s 现在支持verifyHostname
SSL 选项。
此外,现在可以将这些附加器配置为不将 MDC 条目添加为标头。 这addMdcAsHeaders
引入了 boolean 选项来配置此类行为。
附加器现在支持SaslConfig
财产。
有关更多信息,请参阅日志记录子系统 AMQP 附加器。
MessageListenerAdapter 更改
这MessageListenerAdapter
现在提供新的buildListenerArguments(Object, Channel, Message)
方法来构建要传递给目标侦听器的参数数组,并且旧的参数已被弃用。 看MessageListenerAdapter
了解更多信息。
[[交换/队列声明更改]]== 交换/队列声明更改
这ExchangeBuilder
和QueueBuilder
用于创建 Fluent APIExchange
和Queue
用于声明的对象RabbitAdmin
现在支持“众所周知”参数。有关更多信息,请参阅队列和交换的构建器 API。
这RabbitAdmin
有一个新属性explicitDeclarationsOnly
. 有关详细信息,请参阅条件声明。
连接工厂更改
这CachingConnectionFactory
有一个新属性shuffleAddresses
. 提供代理节点地址列表时,将在创建连接之前对列表进行打乱,以便尝试连接的顺序是随机的。有关更多信息,请参阅连接到集群。
使用 Publisher 确认并返回时,现在在连接工厂的executor
. 这避免了amqp-clients
库,如果从回调中执行 rabbit作。有关详细信息,请参阅相关发布者确认和返回。
此外,发布者确认类型现在使用ConfirmType
enum 而不是两个互斥的 setter 方法。
这RabbitConnectionFactoryBean
现在,启用 SSL 时默认使用 TLS 1.2。 看RabbitConnectionFactoryBean
和配置 SSL了解更多信息。
新的 MessagePostProcessor 类
类DeflaterPostProcessor
和InflaterPostProcessor
添加了,以分别支持压缩和解压缩,当消息内容编码设置为deflate
.
其他变化
这Declarables
对象(用于声明多个队列、交换、绑定)现在为每种类型都有一个过滤的 getter。
有关详细信息,请参阅声明交换、队列和绑定的集合。
您现在可以自定义每个Declarable
bean 之前的RabbitAdmin
处理其声明。
有关详细信息,请参阅自动声明交换、队列和绑定。
singleActiveConsumer()
已添加到QueueBuilder
将x-single-active-consumer
queue 参数。
有关更多信息,请参阅队列和交换的构建器 API。
值类型为Class<?>
现在使用getName()
而不是toString()
.
有关详细信息,请参阅消息属性转换器。
现在支持恢复失败的生产者创建的批次。 有关更多信息,请参阅使用批处理侦听器重试。