自 2.1 以来 2.2 中的变化

本节介绍版本 2.1 和版本 2.2 之间的更改。spring-doc.cn

套件更改

以下类/接口已从 移动到 :org.springframework.amqp.rabbit.core.supportorg.springframework.amqp.rabbit.batchspring-doc.cn

此外,已从 移动到 。ListenerExecutionFailedExceptionorg.springframework.amqp.rabbit.listener.exceptionorg.springframework.amqp.rabbit.supportspring-doc.cn

依赖项更改

JUnit (4) 现在是可选依赖项,将不再显示为传递依赖项。spring-doc.cn

该模块现在是模块中的编译依赖项,以获得更好的目标应用程序开发体验,而我们只使用一个模块即可获得 AMQP 组件的完整测试实用程序堆栈。spring-rabbit-junitspring-rabbit-testspring-rabbit-testspring-doc.cn

[[-breaking-api-changes]] == “Breaking” API 更改spring-doc.cn

JUnit (5) 现在返回一个实例,而不是 ,它依赖于 JUnit 4。 它具有相同的 API,因此只需更改任何引用的类名即可。 有关更多信息,请参阅 JUnit5 条件RabbitAvailableCondition.getBrokerRunning()BrokerRunningSupportBrokerRunningspring-doc.cn

ListenerContainer 更改

默认情况下,具有致命异常的消息现在会被拒绝并且不会重新排队,即使确认模式是手动的。 有关更多信息,请参阅异常处理spring-doc.cn

现在可以使用 Micrometer s 监控侦听器性能。 有关更多信息,请参阅监控侦听器性能Timerspring-doc.cn

@RabbitListener 更改

现在,您可以在每个侦听器上配置 一个,覆盖出厂配置,以便更轻松地识别与侦听器关联的线程。 现在,您可以使用注解的属性覆盖容器工厂的属性。 有关更多信息,请参阅覆盖 Container Factory 属性executoracknowledgeModeackModespring-doc.cn

使用批处理时,方法现在可以在一次调用中接收完整的消息批次,而不是一次获取一条消息。@RabbitListenerspring-doc.cn

当一次接收一条批量消息时,最后一条消息的 message 属性设置为 true。isLastInBatchspring-doc.cn

此外,收到的批处理消息现在包含标头。amqp_batchSizespring-doc.cn

侦听器还可以使用在 中创建的批处理,即使该批处理不是由创建者创建的。 有关更多信息,请参阅选择容器SimpleMessageListenerContainerspring-doc.cn

Spring Data Projection 接口现在受 . 有关更多信息,请参见使用 Spring Data Projection 接口Jackson2JsonMessageConverterspring-doc.cn

现在,如果没有属性,则假定内容为 JSON,或者它是默认 () 。 有关更多信息,请参阅Message 转换Jackson2JsonMessageConvertercontentTypeapplication/octet-stringspring-doc.cn

同样地。现在假定内容为 XML(如果没有属性),或者它是默认的 ()。 有关更多信息,请参见Jackson2XmlMessageConverterJackson2XmlMessageConvertercontentTypeapplication/octet-stringspring-doc.cn

当方法返回结果时,bean 和 现在在回复消息属性中可用。 这允许配置 a,例如,在回复中设置一个 Headers 以指示在服务器上调用了哪个方法。 有关更多信息,请参阅回复管理@RabbitListenerMethodbeforeSendReplyMessagePostProcessorspring-doc.cn

现在,您可以配置 在发送回复消息之前对其进行修改。 有关更多信息,请参阅回复管理ReplyPostProcessorspring-doc.cn

AMQP 日志记录附加程序更改

Log4J 和 Logback 现在支持 SSL 选项。AmqpAppenderverifyHostnamespring-doc.cn

此外,这些 appender 现在可以配置为不将 MDC 条目添加为 headers。 引入了 boolean 选项来配置此类行为。addMdcAsHeadersspring-doc.cn

appender 现在支持该属性。SaslConfigspring-doc.cn

有关更多信息,请参见Logging Subsystem AMQP Appendersspring-doc.cn

MessageListenerAdapter 更改

现在,它提供了一种新方法来构建要传递到目标侦听器的参数数组,而旧方法已弃用。 有关更多信息,请参见MessageListenerAdapterMessageListenerAdapterbuildListenerArguments(Object, Channel, Message)spring-doc.cn

[[交换/队列声明更改]] == Exchange/Queue 声明更改spring-doc.cn

用于创建 and objects for declaration 的 and Fluent API 现在支持“众所周知”的参数。 有关更多信息,请参阅适用于 Queues 和 Exchanges 的 Builder APIExchangeBuilderQueueBuilderExchangeQueueRabbitAdminspring-doc.cn

具有新属性 . 有关更多信息,请参阅 条件声明RabbitAdminexplicitDeclarationsOnlyspring-doc.cn

连接工厂更改

具有新属性 . 在提供代理节点地址列表时,该列表将在创建连接之前随机排列,以便尝试连接的顺序是随机的。 有关更多信息,请参阅连接到集群CachingConnectionFactoryshuffleAddressesspring-doc.cn

现在,当使用 Publisher 确认并返回时,将在连接工厂的 . 这可避免在回调中执行 rabbit 操作时可能出现的库死锁。 有关更多信息,请参阅 Correlated Publisher Confirms and Returnsexecutoramqp-clientsspring-doc.cn

此外,现在使用 enum 而不是两个互斥的 setter 方法指定发布者确认类型。ConfirmTypespring-doc.cn

现在,启用 SSL 时,默认使用 TLS 1.2。 有关更多信息,请参见RabbitConnectionFactoryBean和配置 SSLRabbitConnectionFactoryBeanspring-doc.cn

新的 MessagePostProcessor 类

类 和 分别用于支持压缩和解压缩 消息 content-encoding 设置为 .DeflaterPostProcessorInflaterPostProcessordeflatespring-doc.cn

其他更改

该对象(用于声明多个队列、交换、绑定)现在具有每种类型的过滤 getter。 有关更多信息,请参见Declaring Collections of Exchanges, Queues, and BindingsDeclarablesspring-doc.cn

现在,您可以在处理其声明之前自定义每个 bean。 有关更多信息,请参见 Automatic Declaration of Exchanges, Queues, and BindingsDeclarableRabbitAdminspring-doc.cn

singleActiveConsumer()已添加到 to set the queue 参数中。 有关更多信息,请参阅适用于 Queues 和 Exchanges 的 Builder APIQueueBuilderx-single-active-consumerspring-doc.cn

具有 type 值的出站标头现在使用 instead of . 有关更多信息,请参阅 消息属性转换器Class<?>getName()toString()spring-doc.cn

现在支持恢复失败的创建者创建的批处理。 有关更多信息,请参阅使用 Batch 侦听器重试spring-doc.cn