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