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