1.6 中自 1.5 以来的变化

测试支持

现在提供了新的测试支持库。 有关更多信息,请参阅测试支持spring-doc.cadn.net.cn

架构工人

提供 Fluent API 以进行配置的生成器QueueExchange对象现在可用。 有关更多信息,请参阅适用于 Queues 和 Exchanges 的 Builder APIspring-doc.cadn.net.cn

命名空间更改

连接工厂

您现在可以添加thread-factory到连接工厂 bean 声明中——例如,将线程命名为 由amqp-client图书馆。 有关更多信息,请参阅连接和资源管理spring-doc.cadn.net.cn

当您使用CacheMode.CONNECTION,您现在可以限制允许的连接总数。 有关更多信息,请参阅连接和资源管理spring-doc.cadn.net.cn

队列定义

您现在可以为匿名队列提供命名策略。 看AnonymousQueue了解更多信息。spring-doc.cadn.net.cn

侦听器容器更改

空闲消息侦听器检测

您现在可以配置侦听器容器以发布ApplicationEvent实例。 有关更多信息,请参阅 Detecting Idle Asynchronous Consumerspring-doc.cadn.net.cn

不匹配队列检测

默认情况下,当侦听器容器启动时,如果检测到属性或参数不匹配的队列, 容器会记录异常,但会继续侦听。 容器现在具有一个名为mismatchedQueuesFatal,这会阻止容器(和上下文) 如果在启动过程中检测到问题,则启动 Starting。 如果稍后检测到问题,例如从连接故障中恢复后,它还会停止容器。 有关更多信息,请参阅 Message Listener Container Configuration (消息侦听器容器配置)。spring-doc.cadn.net.cn

侦听器容器日志记录

现在,侦听器容器提供了它的beanName到内部SimpleAsyncTaskExecutor作为threadNamePrefix. 它对日志分析很有用。spring-doc.cadn.net.cn

默认错误处理程序

默认错误处理程序 (ConditionalRejectingErrorHandler) 现在视为 Irrecoverable@RabbitListener异常为 Fatal。 有关更多信息,请参阅异常处理spring-doc.cadn.net.cn

AutoDeclareRabbitAdmin实例

请参阅 消息侦听器容器配置 (autoDeclare) 对该选项的语义进行一些更改,以便使用 之RabbitAdmin实例。spring-doc.cadn.net.cn

AmqpTemplate:超时接收

一些新的receive()方法与timeout已引入AmqpTemplate及其RabbitTemplate实现。 有关更多信息,请参阅轮询使用者spring-doc.cadn.net.cn

AsyncRabbitTemplate

新的AsyncRabbitTemplate已引入。 此模板提供了许多发送和接收方法,其中返回值是ListenableFuture,它可以 稍后用于同步或异步获取结果。 有关更多信息,请参阅 Async Rabbit Templatespring-doc.cadn.net.cn

RabbitTemplate变化

1.4.1 引入了在 broker 支持时使用 Direct reply-to 的功能。 这比对每个回复使用临时队列更有效。 此版本允许您覆盖此默认行为,并通过设置useTemporaryReplyQueuesproperty 设置为true. 有关更多信息,请参阅 RabbitMQ Direct 回复spring-doc.cadn.net.cn

RabbitTemplate现在支持user-id-expression (userIdExpression使用 Java 配置时)。 有关更多信息,请参阅经过验证的 User-ID RabbitMQ 文档经过验证的用户 IDspring-doc.cadn.net.cn

消息属性

CorrelationId

correlationIdmessage 属性现在可以是String. 有关更多信息,请参阅 消息属性转换器spring-doc.cadn.net.cn

长字符串标头

以前,DefaultMessagePropertiesConverter长度超过长字符串限制(默认为 1024)的 “converted” 标头 更改为DataInputStream(实际上,它引用了LongString实例的DataInputStream). 在输出时,此标头未被转换(除了转换为 String — 例如java.io.DataInputStream@1d057a39通过调用toString()在溪流上)。spring-doc.cadn.net.cn

在此版本中,长LongString实例现在保留为LongString实例。 您可以使用getBytes[],toString()getStream()方法。 一个大的传入LongString现在也可以在输出上正确地 “转换” 。spring-doc.cadn.net.cn

有关更多信息,请参阅 消息属性转换器spring-doc.cadn.net.cn

入站配送模式

deliveryMode属性不再映射到MessageProperties.deliveryMode. 如果相同的MessagePropertiesobject 用于发送出站消息。 相反,入站deliveryModeheader 映射到MessageProperties.receivedDeliveryMode.spring-doc.cadn.net.cn

有关更多信息,请参阅 消息属性转换器spring-doc.cadn.net.cn

使用带注释的端点时,标头在名为AmqpHeaders.RECEIVED_DELIVERY_MODE.spring-doc.cadn.net.cn

有关更多信息,请参阅带注释的端点方法签名spring-doc.cadn.net.cn

入站用户 ID

user_id属性不再映射到MessageProperties.userId. 如果相同的MessagePropertiesobject 用于发送出站消息。 相反,入站userIdheader 映射到MessageProperties.receivedUserId.spring-doc.cadn.net.cn

有关更多信息,请参阅 消息属性转换器spring-doc.cadn.net.cn

当您使用带注释的终端节点时,标头将在名为AmqpHeaders.RECEIVED_USER_ID.spring-doc.cadn.net.cn

有关更多信息,请参阅带注释的端点方法签名spring-doc.cadn.net.cn

RabbitAdmin变化

声明失败

以前,ignoreDeclarationFailures标志仅对IOException在频道上(例如 Mis-Matched 参数)。 它现在对任何异常(例如TimeoutException). 此外,一个DeclarationExceptionEvent现在,每当声明失败时都会发布。 这RabbitAdminLast Declaration 事件也可用作属性lastDeclarationExceptionEvent. 有关更多信息,请参阅 配置 Brokerspring-doc.cadn.net.cn

@RabbitListener变化

每个 bean 的多个容器

当您使用 Java 8 或更高版本时,您现在可以添加多个@RabbitListenerannotations 添加到@Bean类或 他们的方法。 使用 Java 7 或更早版本时,您可以使用@RabbitListenerscontainer 注解来提供相同的 功能性。 看@Repeatable @RabbitListener了解更多信息。spring-doc.cadn.net.cn

@SendToSPEL 表达式

@SendTo对于没有replyTo属性现在可以根据 请求/回复。 有关更多信息,请参阅回复管理spring-doc.cadn.net.cn

@QueueBinding改进

现在,您可以在@QueueBinding附注。 标头交换现在由@QueueBinding. 有关更多信息,请参阅 Annotation-driven Listener Endpointsspring-doc.cadn.net.cn

延迟消息交换

Spring AMQP 现在对 RabbitMQ Delayed Message Exchange 插件具有一流的支持。 有关更多信息,请参阅 Delayed Message Exchangespring-doc.cadn.net.cn

Exchange 内部标志

任何Exchange定义现在可以标记为internalRabbitAdmin在以下情况下将值传递给代理 声明交易所。 有关更多信息,请参阅 配置 Brokerspring-doc.cadn.net.cn

CachingConnectionFactory变化

CachingConnectionFactory缓存统计

CachingConnectionFactory现在在运行时和 JMX 上提供缓存属性。 有关更多信息,请参阅 Runtime Cache Properties (运行时缓存属性)。spring-doc.cadn.net.cn

访问底层 RabbitMQ 连接工厂

添加了一个新的 getter 以提供对底层工厂的访问。 例如,您可以使用此 getter 来添加自定义连接属性。 有关更多信息,请参阅添加自定义客户端连接属性spring-doc.cadn.net.cn

Channel Cache

默认通道缓存大小已从 1 增加到 25。 有关更多信息,请参阅连接和资源管理spring-doc.cadn.net.cn

此外,SimpleMessageListenerContainer不再将缓存大小调整为至少与数字一样大 之concurrentConsumers— 这是多余的,因为容器使用者通道永远不会被缓存。spring-doc.cadn.net.cn

RabbitConnectionFactoryBean

工厂 Bean 现在公开了一个属性,用于将 Client 端连接属性添加到由生成的 厂。spring-doc.cadn.net.cn

Java 反序列化

现在,您可以在使用 Java 反序列化时配置允许类的“允许列表”。 如果您接受包含来自 untrusted sources 的 untrusted sources。 有关更多信息,请参见 amqp/message-converters.adoc#java-deserialization[Java Deserialization]。spring-doc.cadn.net.cn

JSON 格式MessageConverter

对 JSON 消息转换器的改进现在允许使用没有类型信息的消息 在消息标头中。 请参阅 带注释的方法的消息转换Jackson2JsonMessageConverter了解更多信息。spring-doc.cadn.net.cn

日志记录 Appender

日志 4j 2

添加了 log4j 2 附加程序,现在可以使用addresses要连接的属性 发送到代理集群。spring-doc.cadn.net.cn

客户端连接属性

您现在可以将自定义客户端连接属性添加到 RabbitMQ 连接。spring-doc.cadn.net.cn