Changes in 1.4 Since 1.3
-
POJO 侦听器可使用 @RabbitListener 进行注解。
-
添加了 RabbitMessagingTemplate,允许使用 Message 对象与 RabbitMQ 交互。
-
侦听器容器增加了 missingQueuesFatal 属性。
-
RabbitTemplate ConfirmCallback 接口添加了原因参数。
-
添加了 RabbitConnectionFactoryBean,允许配置 SSL 选项。
-
CachingConnectionFactory 可以配置 connectionTimeout。
-
引入了 AmqpAppender,提供记录选项。
-
侦听器容器默认重新声明缺少的队列。
-
RabbitTemplate 添加了 mandatoryExpression、sendConnectionFactorySelectorExpression 和 receiveConnectionFactorySelectorExpression 表达式。
-
使用路由连接工厂配置侦听器容器以启用队列名称连接选择。
-
RabbitTemplate 添加了 recoveryCallback 选项。
-
MessageConversionException 现在是 AmqpException 的子类。
-
Spring AMQP 与 RabbitMQ 3.4 兼容。
-
添加了 ContentTypeDelegatingMessageConverter 以基于内容类型选择消息转换器。
@RabbitListener
Annotation
POJO 侦听器可以使用 @RabbitListener
进行注释,并由 @EnableRabbit
或 <rabbit:annotation-driven />
启用。此功能需要 Spring Framework 4.1。有关更多信息,请参阅 Annotation-driven Listener Endpoints。
RabbitMessagingTemplate
Added
一个新的 RabbitMessagingTemplate`可以让您通过使用 `spring-messaging``Message`实例与 RabbitMQ 交互。在内部,它使用 `RabbitTemplate
,您可以照常进行配置。此功能需要 Spring Framework 4.1。有关更多信息,请参见 Messaging Integration。
Listener Container missingQueuesFatal
Attribute
1.3.5 在 SimpleMessageListenerContainer
上引入了 missingQueuesFatal
属性。现在可以在侦听器容器命名空间元素上使用它。有关更多信息,请参阅 Message Listener Container Configuration。
RabbitTemplate ConfirmCallback
Interface
此接口上的 `confirm`方法有一个称为 `cause`的附加参数。此参数在可用时包含不确认 (nack) 的原因。参见 Correlated Publisher Confirms and Returns。
RabbitConnectionFactoryBean
Added
RabbitConnectionFactoryBean
创建由 CachingConnectionFactory
使用的 RabbitMQ 底层 ConnectionFactory
。这允许使用 Spring 的依赖注入配置 SSL 选项。请参阅 [connection-factory]。
Using CachingConnectionFactory
CachingConnectionFactory
现可将 connectionTimeout
设置为命名空间中的属性或特性。它将在底层的 RabbitMQ ConnectionFactory
上设置该属性。请参阅 [connection-factory]。
Log Appender
推出了 Logback org.springframework.amqp.rabbit.logback.AmqpAppender
。它提供了类似于 org.springframework.amqp.rabbit.log4j.AmqpAppender
的选项。有关更多信息,请参阅这些类的 JavaDoc。
Log4j AmqpAppender
现在支持 deliveryMode
属性(PERSISTENT
或 NON_PERSISTENT
,默认为 PERSISTENT
)。以前,所有 log4j 消息均为 PERSISTENT
。
此附加程序还支持在发送前修改消息,例如允许添加自定义头。子类应该重写 postProcessMessageBeforeSend()
。
Listener Queues
现在,侦听器容器在启动期间默认重新声明所有丢失的队列。<rabbit:listener-container>`中添加了一个新的 `auto-declare`属性以阻止这些重新声明。参见 `auto-delete
Queues。
RabbitTemplate
: mandatory
and connectionFactorySelector
Expressions
mandatoryExpression
、sendConnectionFactorySelectorExpression`和`receiveConnectionFactorySelectorExpression`SpEL表达式属性已添加到`RabbitTemplate
。当`ReturnCallback`正在使用时,mandatoryExpression`用于针对每个请求消息求出`mandatory`布尔值。请参阅Correlated Publisher Confirms and Returns。当提供`AbstractRoutingConnectionFactory`时,正在使用`sendConnectionFactorySelectorExpression`和`receiveConnectionFactorySelectorExpression`确定在每个AMQP协议交互操作的运行时目标`ConnectionFactory`的`lookupKey
。请参阅[routing-connection-factory]。
Listeners and the Routing Connection Factory
你可以使用路由连接工厂配置 SimpleMessageListenerContainer
,以基于队列名称启用连接选择。请参阅 [routing-connection-factory]。
RabbitTemplate
: RecoveryCallback
Option
已添加 `recoveryCallback`属性以供在 `retryTemplate.execute()`中使用。参见 Adding Retry Capabilities。
MessageConversionException
Change
此异常现在是 AmqpException
的子类。考虑以下代码:
try {
template.convertAndSend("thing1", "thing2", "cat");
}
catch (AmqpException e) {
...
}
catch (MessageConversionException e) {
...
}
第二个 catch 块现在无法访问,需要移动到 catch-all AmqpException
catch 块之上。
RabbitMQ 3.4 Compatibility
Spring AMQP 现在与 RabbitMQ 3.4 兼容,包括直接回复。有关更多信息,请参见 Compatibility和 RabbitMQ Direct reply-to。
ContentTypeDelegatingMessageConverter
Added
已引入 ContentTypeDelegatingMessageConverter
以根据 MessageProperties
中的 contentType
属性选择要使用的 MessageConverter
。有关更多信息,请参阅 Message Converters。