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 调用的传输。有关更多信息,请参阅使用 AMQP 的 Spring 远程调用。