1.2 相较于 1.1 的更改
RabbitMQ 版本
Spring AMQP 现在默认使用 RabbitMQ 3.1.x(但保留与早期版本的兼容性)。对于 RabbitMQ 3.1.x 不再支持的功能(联合交换和 `RabbitTemplate` 上的 `immediate` 属性),已添加一些弃用警告。
Rabbit Admin
RabbitAdmin
现在提供了一个选项,允许在声明失败时继续进行交换、队列和绑定的声明。以前,所有声明都会在发生故障时停止。通过设置 `ignore-declaration-exceptions`,此类异常将被记录(在 `WARN` 级别),但后续声明将继续进行。一个可能有用示例是,当队列声明由于略微不同的 `ttl` 设置而失败时,这将阻止其他声明继续进行。
RabbitAdmin
现在提供了一个名为 `getQueueProperties()` 的附加方法。您可以使用此方法确定队列是否存在于代理上(对于不存在的队列,返回 `null`)。此外,它还会返回队列中当前的消息数量以及当前的消费者数量。
Rabbit 模板
以前,当 `…sendAndReceive()` 方法与固定回复队列一起使用时,使用两个自定义标头来进行关联数据,并保留和恢复回复队列信息。在此版本中,默认情况下使用标准消息属性(`correlationId`),尽管您可以指定要使用的自定义属性。此外,嵌套的 `replyTo` 信息现在保留在模板内部,而不是使用自定义标头。
`immediate` 属性已弃用。使用 RabbitMQ 3.0.x 或更高版本时,不得设置此属性。
队列和其他项目的自动声明
以前,在声明队列、交换和绑定时,无法定义用于声明的连接工厂。每个 `RabbitAdmin` 都使用其连接来声明所有组件。
从本版本开始,您现在可以将声明限制为特定的 `RabbitAdmin` 实例。请参阅 条件声明。
AMQP 远程调用
现在提供了使用 Spring 远程调用技术的工具,使用 AMQP 作为 RPC 调用的传输方式。有关更多信息,请参阅 [远程调用]