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