此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring AMQP 4.0.2spring-doc.cadn.net.cn

1.2 版本相对于 1.1 版本的变更

RabbitMQ 版本

Spring AMQP 现在默认使用 RabbitMQ 3.1.x(但仍保持对早期版本的兼容性)。
针对 RabbitMQ 3.1.x 不再支持的功能,已添加某些弃用警告——包括Federation交换机以及 immediate 属性在 RabbitTemplate 上的使用。spring-doc.cadn.net.cn

Rabbit Admin

RabbitAdmin 现在提供了一个选项,允许交换机、队列和绑定的声明在声明失败时继续进行。此前,所有声明在发生失败时都会停止。通过设置 ignore-declaration-exceptions,此类异常会以 WARN 级别记录日志,但后续的声明仍将继续执行。一个可能适用此特性的示例是:当队列声明因略不同的 ttl 设置而失败时,这通常会阻止其他声明继续进行。spring-doc.cadn.net.cn

RabbitAdmin 现在提供了一个额外的方法,称为 getQueueProperties()。您可使用该方法判断队列是否存在于代理服务器上(对于不存在的队列返回 null)。此外,该方法还会返回当前队列中的消息数量以及当前消费者数量。spring-doc.cadn.net.cn

RabbitTemplate

之前,当使用 …​sendAndReceive() 方法并配合固定回复队列时,会使用两个自定义头信息来传递关联数据,并保留和恢复回复队列信息。本版本中,默认情况下改用标准消息属性(correlationId),尽管您也可以指定一个自定义属性作为替代。此外,嵌套的 replyTo 信息现在会在模板内部进行保留,而不再依赖于自定义头信息。spring-doc.cadn.net.cn

属性 immediate 已弃用。
在使用 RabbitMQ 3.0.x 或更高版本时,您不得设置此属性。spring-doc.cadn.net.cn

JSON 消息转换器

A Jackson 2.x MessageConverter 已提供,同时保留了现有的使用 Jackson 1.x 的转换器。spring-doc.cadn.net.cn

自动声明队列及其他项目

以前,在声明队列、交换机和绑定时,您无法定义用于声明的连接工厂。每个 RabbitAdmin 都通过其自身的连接来声明所有组件。spring-doc.cadn.net.cn

从本版本开始,您现在可以将声明限制为特定的 RabbitAdmin 个实例。请参阅 条件声明spring-doc.cadn.net.cn

AMQP 远程调用

现在提供了使用 Spring 远程调用技术的设施,使用 AMQP 作为 RPC 调用的传输协议。
有关更多信息,请参阅 Spring 远程调用与 AMQPspring-doc.cadn.net.cn

请求的心跳

多位用户要求将底层客户端连接工厂的 requestedHeartBeats 属性暴露在 Spring AMQP CachingConnectionFactory 中。现在该功能已可用。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

此前,必须将 AMQP 客户端工厂配置为独立的 Bean,并将其引用提供给 CachingConnectionFactoryspring-doc.cadn.net.cn

spring-doc.cadn.net.cn