测试支持
现在提供了新的测试支持库。 有关详细信息,请参阅测试支持。
建筑工人
现在可以使用提供用于配置和对象的流畅 API 的构建器。
有关详细信息,请参阅用于队列和 Exchange 的构建器 API。Queue
Exchange
命名空间更改
连接工厂
现在,您可以向连接工厂 Bean 声明添加 a ,例如,命名线程
由库创建。
有关详细信息,请参阅连接和资源管理。thread-factory
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 引入了在代理支持时使用直接回复的功能。
它比对每个回复使用临时队列更有效。
此版本允许您通过将属性设置为 来覆盖此默认行为并使用临时队列。
有关更多信息,请参见 RabbitMQ Direct reply-to。useTemporaryReplyQueues
true
现在支持(使用 Java 配置时)。
有关更多信息,请参阅验证的用户 ID RabbitMQ 文档和验证的用户标识。RabbitTemplate
user-id-expression
userIdExpression
消息属性
用CorrelationId
message 属性现在可以是 .
有关更多信息,请参见消息属性转换器。correlationId
String
长字符串标头
以前,“转换”标头的长度超过长字符串限制(默认为 1024)
到 a(实际上,它引用了实例的 )。
在输出时,此标头未转换(除了转换为字符串 — 例如,通过调用流)。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
变化
声明失败
以前,该标志仅在频道上生效(例如不匹配
参数)。
现在,它对任何异常(如 )都生效。
此外,现在每当声明失败时,都会发布 a。
最后一个声明事件也可作为属性使用。
有关更多信息,请参阅配置代理。ignoreDeclarationFailures
IOException
TimeoutException
DeclarationExceptionEvent
RabbitAdmin
lastDeclarationExceptionEvent
@RabbitListener
变化
每个 Bean 有多个容器
当您使用 Java 8 或更高版本时,您现在可以向类添加多个注释或
他们的方法。
使用 Java 7 或更早版本时,可以使用容器注解来提供相同的内容
功能性。
有关详细信息,
请参阅@Repeatable@RabbitListener
。@RabbitListener
@Bean
@RabbitListeners
@SendTo
SpEL 表达式
@SendTo
对于路由没有属性的回复,现在可以根据 SpEL 表达式进行评估
请求/回复。
有关详细信息,请参阅回复管理。replyTo
@QueueBinding
改进
现在,您可以在批注中指定队列、交换和绑定的参数。
标头交换现在由 支持。
有关详细信息,请参阅注释驱动的侦听器端点。@QueueBinding
@QueueBinding
延迟的消息交换
Spring AMQP 现在对 RabbitMQ Delayed Message Exchange 插件提供了一流的支持。 有关详细信息,请参阅延迟消息交换。
Exchange 内部标志
现在,任何定义都可以标记为 ,并在以下情况下将值传递给代理
声明交换。
有关更多信息,请参阅配置代理。Exchange
internal
RabbitAdmin
CachingConnectionFactory
变化
CachingConnectionFactory
缓存统计信息
现在在运行时和 JMX 上提供缓存属性。
有关更多信息,请参见运行时缓存属性。CachingConnectionFactory
访问底层 RabbitMQ 连接工厂
添加了一个新的 getter 以提供对基础工厂的访问。 例如,您可以使用此 getter 添加自定义连接属性。 有关详细信息,请参阅添加自定义客户端连接属性。
通道缓存
默认通道缓存大小已从 1 增加到 25。 有关详细信息,请参阅连接和资源管理。
此外,不再将缓存大小调整为至少与数字一样大
的 — 这是多余的,因为容器使用者通道永远不会缓存。SimpleMessageListenerContainer
concurrentConsumers
Java 反序列化
现在,您可以在使用 Java 反序列化时配置允许类的“允许列表”。 如果接受带有序列化 java 对象的消息,则应考虑创建允许列表 不受信任的来源。 有关更多信息,请参见 Java 反序列化。
JSON的MessageConverter
对 JSON 消息转换器的改进现在允许使用没有类型信息的消息 在邮件头中。 有关更多信息,请参见 Message Conversion for Annotated Methods 和 [json-message-converter]。