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