1.4 中自 1.3 以来的变化

@RabbitListener注解

POJO 侦听器可以用 、 enabled by 或 进行注释。 此功能需要 Spring Framework 4.1。 有关更多信息,请参阅 Annotation-driven Listener Endpoints@RabbitListener@EnableRabbit<rabbit:annotation-driven />spring-doc.cn

RabbitMessagingTemplate添加

new 允许您使用实例与 RabbitMQ 交互。 在内部,它使用 ,您可以正常配置。 此功能需要 Spring Framework 4.1。 有关更多信息,请参阅消息收发集成RabbitMessagingTemplatespring-messagingMessageRabbitTemplatespring-doc.cn

侦听器容器属性missingQueuesFatal

1.3.5 在 上引入了 属性。 现在,这在侦听器容器命名空间元素上可用。 请参阅 消息侦听器容器配置missingQueuesFatalSimpleMessageListenerContainerspring-doc.cn

RabbitTemplate 接口ConfirmCallback

此接口上的方法有一个名为 . 如果可用,此参数包含否定确认 (nack) 的原因。 请参阅 相关发布者确认和返回confirmcausespring-doc.cn

RabbitConnectionFactoryBean添加

RabbitConnectionFactoryBean创建由 . 这允许使用 Spring 的依赖项注入配置 SSL 选项。 请参阅配置底层客户端连接工厂ConnectionFactoryCachingConnectionFactoryspring-doc.cn

CachingConnectionFactory

现在允许将 设置为 命名空间中的属性或属性。 它在底层 RabbitMQ 上设置属性。 请参阅配置底层客户端连接工厂CachingConnectionFactoryconnectionTimeoutConnectionFactoryspring-doc.cn

Log Appender

引入了 Logback。 它提供类似于 的选项。 有关更多信息,请参阅这些类的 JavaDoc。org.springframework.amqp.rabbit.logback.AmqpAppenderorg.springframework.amqp.rabbit.log4j.AmqpAppenderspring-doc.cn

Log4j 现在支持属性 ( or , default: )。 以前,所有 log4j 消息都是 .AmqpAppenderdeliveryModePERSISTENTNON_PERSISTENTPERSISTENTPERSISTENTspring-doc.cn

appender 还支持修改 before sending —— 例如,允许添加自定义 Headers。 子类应覆盖 .MessagepostProcessMessageBeforeSend()spring-doc.cn

侦听器队列

现在,默认情况下,侦听器容器会在启动期间重新声明任何缺失的队列。 已向 添加了一个新属性,以防止这些重新声明。 请参阅 auto-delete Queuesauto-declare<rabbit:listener-container>spring-doc.cn

RabbitTemplate: 和表达式mandatoryconnectionFactorySelector

的 、 和 SPEL 表达式的属性已添加到 。 这用于在使用 a 时根据每条请求消息评估布尔值。 请参阅 相关发布者确认和返回。 当提供 an 时,使用 and 来确定每个 AMQP 协议交互操作在运行时的目标。 请参阅 Routing Connection FactorymandatoryExpressionsendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpressionRabbitTemplatemandatoryExpressionmandatoryReturnCallbacksendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpressionAbstractRoutingConnectionFactorylookupKeyConnectionFactoryspring-doc.cn

侦听器和路由连接工厂

您可以使用 routing 连接工厂配置 a,以启用基于队列名称的连接选择。 请参阅 Routing Connection FactorySimpleMessageListenerContainerspring-doc.cn

RabbitTemplate:选择RecoveryCallback

已添加该属性以在 . 请参阅添加重试功能recoveryCallbackretryTemplate.execute()spring-doc.cn

MessageConversionException改变

此异常现在是 的子类。 请考虑以下代码:AmqpExceptionspring-doc.cn

try {
    template.convertAndSend("thing1", "thing2", "cat");
}
catch (AmqpException e) {
	...
}
catch (MessageConversionException e) {
	...
}

第二个 catch 块不再可访问,需要移动到 catch-all catch 块的上方。AmqpExceptionspring-doc.cn

RabbitMQ 3.4 兼容性

Spring AMQP 现在与 RabbitMQ 3.4 兼容,包括直接回复。 有关更多信息,请参阅兼容性RabbitMQ Direct 回复spring-doc.cn

ContentTypeDelegatingMessageConverter添加

已引入 ,以根据 中的属性选择要使用的 。 有关更多信息,请参阅 消息转换器ContentTypeDelegatingMessageConverterMessageConvertercontentTypeMessagePropertiesspring-doc.cn