| 
         此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 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方法现在可以在一次调用中接收完整的一批消息,而不是一次获取一条消息。
当一次接收一条批处理消息时,最后一条消息具有isLastInBatchmessage 属性设置为 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 和 LogbackAmqpAppenders 现在支持verifyHostnameSSL 选项。
此外,现在可以将这些附加器配置为不将 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作。
有关详细信息,请参阅相关发布者确认和退货。
此外,发布者确认类型现在使用ConfirmTypeenum 而不是两个互斥的 setter 方法。
这RabbitConnectionFactoryBean现在,启用 SSL 时默认使用 TLS 1.2。
看RabbitConnectionFactoryBean和配置 SSL了解更多信息。
新的 MessagePostProcessor 类
类DeflaterPostProcessor和InflaterPostProcessor添加了,以分别支持压缩和解压缩,当消息内容编码设置为deflate.
其他变化
这Declarables对象(用于声明多个队列、交换、绑定)现在为每种类型都有一个过滤的 getter。
有关详细信息,请参阅声明交换、队列和绑定的集合。
您现在可以自定义每个Declarablebean 之前的RabbitAdmin处理其声明。
有关详细信息,请参阅自动声明交换、队列和绑定。
singleActiveConsumer()已添加到QueueBuilder将x-single-active-consumerqueue 参数。
有关更多信息,请参阅队列和交换的构建器 API。
值类型为Class<?>现在使用getName()而不是toString().
有关详细信息,请参阅消息属性转换器。
现在支持恢复失败的生产者创建的批次。 有关更多信息,请参阅使用批处理侦听器重试。