1.4 相较 1.3 的变化

@RabbitListener 注解

POJO 监听器可以使用 @RabbitListener 进行注解,并通过 @EnableRabbit<rabbit:annotation-driven /> 启用。此功能需要 Spring Framework 4.1。有关更多信息,请参阅注解驱动的监听器端点

添加了 RabbitMessagingTemplate

新的 RabbitMessagingTemplate 允许您使用 spring-messaging Message 实例与 RabbitMQ 交互。在内部,它使用 RabbitTemplate,您可以像往常一样配置。此功能需要 Spring Framework 4.1。有关更多信息,请参阅消息集成

监听器容器 missingQueuesFatal 属性

1.3.5 在 SimpleMessageListenerContainer 上引入了 missingQueuesFatal 属性。此属性现在在监听器容器命名空间元素中可用。请参阅消息监听器容器配置

RabbitTemplate ConfirmCallback 接口

此接口上的 confirm 方法有一个名为 cause 的附加参数。当可用时,此参数包含负确认 (nack) 的原因。请参阅相关发布者确认和返回

添加了 RabbitConnectionFactoryBean

RabbitConnectionFactoryBean 创建 CachingConnectionFactory 使用的底层 RabbitMQ ConnectionFactory。这使得可以使用 Spring 的依赖注入来配置 SSL 选项。请参阅配置底层客户端连接工厂

使用 CachingConnectionFactory

CachingConnectionFactory 现在允许将 connectionTimeout 设置为属性或命名空间中的属性。它在底层 RabbitMQ ConnectionFactory 上设置该属性。请参阅配置底层客户端连接工厂

日志附加器

引入了 Logback org.springframework.amqp.rabbit.logback.AmqpAppender。它提供了与 org.springframework.amqp.rabbit.log4j.AmqpAppender 相似的选项。有关更多信息,请参阅这些类的 JavaDoc。

Log4j AmqpAppender 现在支持 deliveryMode 属性(PERSISTENTNON_PERSISTENT,默认值:PERSISTENT)。以前,所有 log4j 消息都是 PERSISTENT

附加器还支持在发送前修改 Message —— 例如,允许添加自定义标头。子类应重写 postProcessMessageBeforeSend()

监听器队列

监听器容器现在默认在启动期间重新声明任何缺失的队列。新的 auto-declare 属性已添加到 <rabbit:listener-container> 以防止这些重新声明。请参阅auto-delete 队列

RabbitTemplate: mandatoryconnectionFactorySelector 表达式

已将 mandatoryExpressionsendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression SpEL 表达式属性添加到 RabbitTemplate。当使用 ReturnCallback 时,mandatoryExpression 用于针对每个请求消息评估 mandatory 布尔值。请参阅相关发布者确认和返回。当提供 AbstractRoutingConnectionFactory 时,sendConnectionFactorySelectorExpressionreceiveConnectionFactorySelectorExpression 用于在每个 AMQP 协议交互操作的运行时确定目标 ConnectionFactorylookupKey。请参阅路由连接工厂

监听器和路由连接工厂

您可以配置具有路由连接工厂的 SimpleMessageListenerContainer,以根据队列名称启用连接选择。请参阅路由连接工厂

RabbitTemplate: RecoveryCallback 选项

已添加 recoveryCallback 属性,用于 retryTemplate.execute()。请参阅添加重试功能

MessageConversionException 更改

此异常现在是 AmqpException 的子类。考虑以下代码:

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

第二个 catch 块不再可达,需要移动到 catch-all AmqpException catch 块之上。

RabbitMQ 3.4 兼容性

Spring AMQP 现在与 RabbitMQ 3.4 兼容,包括直接答复。有关更多信息,请参阅兼容性RabbitMQ 直接答复

添加了 ContentTypeDelegatingMessageConverter

引入了 ContentTypeDelegatingMessageConverter,用于根据 MessageProperties 中的 contentType 属性选择要使用的 MessageConverter。有关更多信息,请参阅消息转换器

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