|
请使用 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 调用的传输协议。
有关更多信息,请参阅 [remoting]
请求的心跳
多位用户要求将底层客户端连接工厂的 requestedHeartBeats 属性暴露在 Spring AMQP CachingConnectionFactory 中。现在该功能已可用。
此前,必须将 AMQP 客户端工厂配置为独立的 Bean,并将其引用提供给 CachingConnectionFactory。