此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring AMQP 3.2.6spring-doc.cadn.net.cn

1.6 自 1.5 以来的变化

测试支持

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

架构工人

提供流畅 API 用于配置的构建器QueueExchange对象现在可用。 有关更多信息,请参阅队列和交换的构建器 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空闲时的实例。 有关详细信息,请参阅检测空闲异步使用者spring-doc.cadn.net.cn

队列检测不匹配

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

侦听器容器日志记录

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

默认错误处理程序

默认错误处理程序 (ConditionalRejectingErrorHandler) 现在认为不可恢复@RabbitListener例外情况是致命的。 有关详细信息,请参阅异常处理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,可以 稍后用于同步或异步获取结果。 有关更多信息,请参阅异步兔子模板spring-doc.cadn.net.cn

RabbitTemplate变化

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

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

消息属性

CorrelationId

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

长字符串标头

以前,DefaultMessagePropertiesConverter“converted”标头长度超过长字符串限制(默认为 1024) 设置为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. 如果相同,则此更改可避免意外传播MessageProperties对象用于发送出站消息。 相反,入站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. 如果相同,则此更改可避免意外传播MessageProperties对象用于发送出站消息。 相反,入站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在通道上(例如不匹配 参数)。 它现在对任何异常(例如TimeoutException). 此外,一个DeclarationExceptionEvent现在每当声明失败时都会发布。 这RabbitAdminlast 声明事件也可用作属性lastDeclarationExceptionEvent. 有关更多信息,请参阅配置代理spring-doc.cadn.net.cn

@RabbitListener变化

每个 Bean 的多个容器

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

@SendToSpEL 表达式

@SendTo用于路由无replyTo属性现在可以是 SpEL 表达式,根据 请求/回复。 有关更多信息,请参阅回复管理spring-doc.cadn.net.cn

@QueueBinding改进

您现在可以在@QueueBinding附注。 现在支持@QueueBinding. 有关更多信息,请参阅注释驱动的侦听器端点spring-doc.cadn.net.cn

延迟消息交换

Spring AMQP 现在对 RabbitMQ Delayed Message Exchange 插件具有一流的支持。 有关详细信息,请参阅延迟消息交换spring-doc.cadn.net.cn

Exchange 内部标志

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

CachingConnectionFactory变化

CachingConnectionFactory缓存统计信息

CachingConnectionFactory现在在运行时和 JMX 上提供缓存属性。 有关更多信息,请参阅运行时缓存属性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 现在公开一个属性,将客户端连接属性添加到由生成的 厂。spring-doc.cadn.net.cn

Java 反序列化

现在,当您使用 Java 反序列化时,您可以配置允许类的“允许列表”。 如果您接受具有序列化 java 对象的消息,则应考虑创建允许列表 不受信任的来源。 有关更多信息,请参阅 amqp/message-converters.adoc#java-deserialization[Java Deserialization]。spring-doc.cadn.net.cn

JSONMessageConverter

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

记录附加器

日志4j 2

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

客户端连接属性

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