| 
         此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 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
这correlationIdmessage 属性现在可以是String.
有关详细信息,请参阅消息属性转换器。
长字符串标头
以前,DefaultMessagePropertiesConverter“converted”标头长度超过长字符串限制(默认为 1024)
设置为DataInputStream(实际上,它引用了LongString实例的DataInputStream).
在输出时,此标头未被转换(除了转换为 String — 例如java.io.DataInputStream@1d057a39通过调用toString()在直播中)。
通过此版本,长LongString实例现在保留为LongString实例。
您可以使用getBytes[],toString()或getStream()方法。
大量传入LongString现在在输出时也正确“转换”。
有关详细信息,请参阅消息属性转换器。
入库配送模式
这deliveryMode属性不再映射到MessageProperties.deliveryMode.
如果相同,则此更改可避免意外传播MessageProperties对象用于发送出站消息。
相反,入站deliveryModeheader 映射到MessageProperties.receivedDeliveryMode.
有关详细信息,请参阅消息属性转换器。
使用带注释的端点时,标头在名为AmqpHeaders.RECEIVED_DELIVERY_MODE.
有关详细信息,请参阅带注释的端点方法签名。
入站用户 ID
这user_id属性不再映射到MessageProperties.userId.
如果相同,则此更改可避免意外传播MessageProperties对象用于发送出站消息。
相反,入站userIdheader 映射到MessageProperties.receivedUserId.
有关详细信息,请参阅消息属性转换器。
使用带注释的终结点时,标头将在名为AmqpHeaders.RECEIVED_USER_ID.
有关详细信息,请参阅带注释的端点方法签名。
RabbitAdmin变化
声明失败
以前,ignoreDeclarationFailures标志仅对IOException在通道上(例如不匹配
参数)。
它现在对任何异常(例如TimeoutException).
此外,一个DeclarationExceptionEvent现在每当声明失败时都会发布。
这RabbitAdminlast 声明事件也可用作属性lastDeclarationExceptionEvent.
有关更多信息,请参阅配置代理。
@RabbitListener变化
每个 Bean 的多个容器
当您使用 Java 8 或更高版本时,您现在可以添加多个@RabbitListener注释到@Beanclasses 或
他们的方法。
使用 Java 7 或更早版本时,您可以使用@RabbitListeners容器注释以提供相同的
功能性。
看@Repeatable @RabbitListener了解更多信息。
@SendToSpEL 表达式
@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了解更多信息。