Changes to 1.2 Since 1.1

RabbitMQ Version

现在,Spring AMQP 默认使用 RabbitMQ 3.1.x(但是仍然兼容早期版本)。已添加弃用部分功能(不再受 RabbitMQ 3.1.x 支持的功能)——联合交换器和 RabbitTemplate 上的 immediate 属性。

Rabbit Admin

现在,RabbitAdmin 提供了一个选项,让交换器、队列和绑定声明在声明失败时继续进行。以前,所有声明都会在发生故障时停止。通过设置 ignore-declaration-exceptions,此类异常会被记录(在 WARN 级别),但是进一步的声明会继续进行。一个此设置可能派得上用场的示例是,当队列声明由于 ttl 设置稍微不同而失败,进而通常会阻止其他声明继续进行时。

现在,RabbitAdmin 提供了一个称为 getQueueProperties() 的附加方法。你可以使用此方法确定队列是否存在于代理上(对于不存在的队列,返回 null)。此外,它会返回队列中的当前消息数以及当前使用者数。

Rabbit Template

以前,当 …​sendAndReceive() 方法与固定回复队列一起使用时,两个自定义标题用于关联数据以及保留和恢复回复队列信息。使用此版本,标准消息属性(correlationId)默认使用,尽管你可以指定使用一个自定义属性。此外,嵌套的 replyTo 信息现在会保留在模板内部,而不是使用自定义标题。

immediate 属性已弃用。在使用 RabbitMQ 3.0.x 或更高版本时,不得设置此属性。

JSON Message Converters

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

Automatic Declaration of Queues and Other Items

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

从这个版本开始,你现在可以将声明限制为特定的 RabbitAdmin 实例。请参阅 Conditional Declaration

AMQP Remoting

现在提供了使用 Spring 远程调用技术,并通过 AMQP 作为 RPC 调用的传输。有关详细信息,请参见 [remoting]

Requested Heart Beats

一些用户希望在 Spring AMQP 的 CachingConnectionFactory 中公开底层的客户端连接工厂的 requestedHeartBeats 属性。现在该属性已可用。以前,必须将 AMQP 客户端工厂配置为单独的 bean,并向 CachingConnectionFactory 提供对该工厂的引用。