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