此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring AMQP 3.2.6! |
1.6 自 1.5 以来的变化
测试支持
现在提供了一个新的测试支持库。 有关更多信息,请参阅测试支持。
架构工人
提供流畅 API 用于配置的构建器Queue
和Exchange
对象现在可用。
有关更多信息,请参阅队列和交换的构建器 API。
命名空间更改
连接工厂
您现在可以添加thread-factory
到连接工厂 bean 声明 — 例如,将线程命名为
由amqp-client
图书馆。
有关详细信息,请参阅连接和资源管理。
当您使用CacheMode.CONNECTION
,您现在可以限制允许的连接总数。
有关详细信息,请参阅连接和资源管理。
队列定义
现在,您可以为匿名队列提供命名策略。
看AnonymousQueue
了解更多信息。
侦听器容器更改
空闲消息侦听器检测
您现在可以配置要发布的侦听器容器ApplicationEvent
空闲时的实例。
有关详细信息,请参阅检测空闲异步使用者。
队列检测不匹配
默认情况下,当侦听器容器启动时,如果检测到属性或参数不匹配的队列,
容器记录异常,但继续侦听。
容器现在有一个名为mismatchedQueuesFatal
,这会阻止容器(和上下文)
如果在启动过程中检测到问题,则启动。
如果稍后检测到问题,例如从连接故障中恢复后,它还会停止容器。
有关详细信息,请参阅消息侦听器容器配置。
默认错误处理程序
默认错误处理程序 (ConditionalRejectingErrorHandler
) 现在认为不可恢复@RabbitListener
例外情况是致命的。
有关详细信息,请参阅异常处理。
AutoDeclare
和RabbitAdmin
实例
请参阅消息侦听器容器配置 (autoDeclare
)以对该选项的语义进行一些更改,以进行一些更改
之RabbitAdmin
应用程序上下文中的实例。
AmqpTemplate
:超时接收
一些新的receive()
方法timeout
已为AmqpTemplate
及其RabbitTemplate
实现。
有关详细信息,请参阅轮询消费者。
用AsyncRabbitTemplate
一个新的AsyncRabbitTemplate
已被引入。
此模板提供了许多发送和接收方法,其中返回值是ListenableFuture
,可以
稍后用于同步或异步获取结果。
有关更多信息,请参阅异步兔子模板。
RabbitTemplate
变化
1.4.1 引入了在代理支持时使用直接回复的功能。
它比对每个回复使用临时队列更有效。
此版本允许您覆盖此默认行为,并通过将useTemporaryReplyQueues
属性设置为true
.
有关更多信息,请参阅 RabbitMQ 直接回复。
这RabbitTemplate
现在支持user-id-expression
(userIdExpression
使用 Java 配置时)。
有关更多信息,请参阅已验证的用户 ID RabbitMQ 文档和已验证的用户 ID。
消息属性
用CorrelationId
这correlationId
message 属性现在可以是String
.
有关详细信息,请参阅消息属性转换器。
长字符串标头
以前,DefaultMessagePropertiesConverter
“converted”标头长度超过长字符串限制(默认为 1024)
设置为DataInputStream
(实际上,它引用了LongString
实例的DataInputStream
).
在输出时,此标头未被转换(除了转换为 String — 例如java.io.DataInputStream@1d057a39
通过调用toString()
在直播中)。
通过此版本,长LongString
实例现在保留为LongString
实例。
您可以使用getBytes[]
,toString()
或getStream()
方法。
大量传入LongString
现在在输出时也正确“转换”。
有关详细信息,请参阅消息属性转换器。
入库配送模式
这deliveryMode
属性不再映射到MessageProperties.deliveryMode
.
如果相同,则此更改可避免意外传播MessageProperties
对象用于发送出站消息。
相反,入站deliveryMode
header 映射到MessageProperties.receivedDeliveryMode
.
有关详细信息,请参阅消息属性转换器。
使用带注释的端点时,标头在名为AmqpHeaders.RECEIVED_DELIVERY_MODE
.
有关详细信息,请参阅带注释的端点方法签名。
入站用户 ID
这user_id
属性不再映射到MessageProperties.userId
.
如果相同,则此更改可避免意外传播MessageProperties
对象用于发送出站消息。
相反,入站userId
header 映射到MessageProperties.receivedUserId
.
有关详细信息,请参阅消息属性转换器。
使用带注释的终结点时,标头将在名为AmqpHeaders.RECEIVED_USER_ID
.
有关详细信息,请参阅带注释的端点方法签名。
RabbitAdmin
变化
声明失败
以前,ignoreDeclarationFailures
标志仅对IOException
在通道上(例如不匹配
参数)。
它现在对任何异常(例如TimeoutException
).
此外,一个DeclarationExceptionEvent
现在每当声明失败时都会发布。
这RabbitAdmin
last 声明事件也可用作属性lastDeclarationExceptionEvent
.
有关更多信息,请参阅配置代理。
@RabbitListener
变化
每个 Bean 的多个容器
当您使用 Java 8 或更高版本时,您现在可以添加多个@RabbitListener
注释到@Bean
classes 或
他们的方法。
使用 Java 7 或更早版本时,您可以使用@RabbitListeners
容器注释以提供相同的
功能性。
看@Repeatable
@RabbitListener
了解更多信息。
@SendTo
SpEL 表达式
@SendTo
用于路由无replyTo
属性现在可以是 SpEL 表达式,根据
请求/回复。
有关更多信息,请参阅回复管理。
@QueueBinding
改进
您现在可以在@QueueBinding
附注。
现在支持@QueueBinding
.
有关更多信息,请参阅注释驱动的侦听器端点。
延迟消息交换
Spring AMQP 现在对 RabbitMQ Delayed Message Exchange 插件具有一流的支持。 有关详细信息,请参阅延迟消息交换。
Exchange 内部标志
任何Exchange
定义现在可以标记为internal
和RabbitAdmin
在以下情况下将值传递给代理
宣布交换。
有关更多信息,请参阅配置代理。
CachingConnectionFactory
变化
CachingConnectionFactory
缓存统计信息
这CachingConnectionFactory
现在在运行时和 JMX 上提供缓存属性。
有关更多信息,请参阅运行时缓存属性。
访问底层 RabbitMQ 连接工厂
添加了一个新的 getter 以提供对底层工厂的访问。 例如,您可以使用此 getter 添加自定义连接属性。 有关详细信息,请参阅添加自定义客户端连接属性。
通道缓存(Channel Cache)
默认通道缓存大小已从 1 增加到 25。有关详细信息,请参阅连接和资源管理。
此外,SimpleMessageListenerContainer
不再将缓存大小调整为至少与数字一样大 之concurrentConsumers
— 这是多余的,因为容器使用者通道永远不会被缓存。
Java 反序列化
现在,当您使用 Java 反序列化时,您可以配置允许类的“允许列表”。 如果您接受具有序列化 java 对象的消息,则应考虑创建允许列表 不受信任的来源。 有关更多信息,请参阅 amqp/message-converters.adoc#java-deserialization[Java Deserialization]。
JSONMessageConverter
对 JSON 消息转换器的改进现在允许使用没有类型信息的消息
在消息头中。
请参阅带注释的方法的消息转换和Jackson2JsonMessageConverter
了解更多信息。