|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring AMQP 4.0.2! |
1.2 版本相对于 1.1 版本的变更
RabbitMQ 版本
Spring AMQP 现在默认使用 RabbitMQ 3.1.x(但仍保持对早期版本的兼容性)。
针对 RabbitMQ 3.1.x 不再支持的功能,已添加某些弃用警告——包括Federation交换机以及 immediate 属性在 RabbitTemplate 上的使用。
Rabbit Admin
RabbitAdmin 现在提供了一个选项,允许交换机、队列和绑定的声明在声明失败时继续进行。此前,所有声明在发生失败时都会停止。通过设置 ignore-declaration-exceptions,此类异常会以 WARN 级别记录日志,但后续的声明仍将继续执行。一个可能适用此特性的示例是:当队列声明因略不同的 ttl 设置而失败时,这通常会阻止其他声明继续进行。
RabbitAdmin 现在提供了一个额外的方法,称为 getQueueProperties()。您可使用该方法判断队列是否存在于代理服务器上(对于不存在的队列返回 null)。此外,该方法还会返回当前队列中的消息数量以及当前消费者数量。
RabbitTemplate
之前,当使用 …sendAndReceive() 方法并配合固定回复队列时,会使用两个自定义头信息来传递关联数据,并保留和恢复回复队列信息。本版本中,默认情况下改用标准消息属性(correlationId),尽管您也可以指定一个自定义属性作为替代。此外,嵌套的 replyTo 信息现在会在模板内部进行保留,而不再依赖于自定义头信息。
属性 immediate 已弃用。
在使用 RabbitMQ 3.0.x 或更高版本时,您不得设置此属性。
自动声明队列及其他项目
以前,在声明队列、交换机和绑定时,您无法定义用于声明的连接工厂。每个 RabbitAdmin 都通过其自身的连接来声明所有组件。
从本版本开始,您现在可以将声明限制为特定的 RabbitAdmin 个实例。请参阅 条件声明。
AMQP 远程调用
现在提供了使用 Spring 远程调用技术的设施,使用 AMQP 作为 RPC 调用的传输协议。
有关更多信息,请参阅 Spring 远程调用与 AMQP。
请求的心跳
多位用户要求将底层客户端连接工厂的 requestedHeartBeats 属性暴露在 Spring AMQP CachingConnectionFactory 中。现在该功能已可用。
此前,必须将 AMQP 客户端工厂配置为独立的 Bean,并将其引用提供给 CachingConnectionFactory。