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