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 或更高版本时,您不得设置此属性。

JSON 消息转换器

现在提供了一个 Jackson 2.x MessageConverter,以及使用 Jackson 1.x 的现有转换器。

队列和其他项目的自动声明

以前,在声明队列、交换机和绑定时,您无法定义用于声明的连接工厂。每个 RabbitAdmin 都使用其连接声明所有组件。

从这个版本开始,您现在可以将声明限制到特定的 RabbitAdmin 实例。请参阅条件声明

AMQP 远程调用

现在提供了使用 Spring 远程调用技术的功能,使用 AMQP 作为 RPC 调用的传输。有关更多信息,请参阅使用 AMQP 的 Spring 远程调用

请求的心跳

一些用户要求在 Spring AMQP CachingConnectionFactory 上公开底层客户端连接工厂的 requestedHeartBeats 属性。现在这已经可用。以前,需要将 AMQP 客户端工厂配置为单独的 bean,并在 CachingConnectionFactory 中提供对其的引用。

© . This site is unofficial and not affiliated with VMware.