1.5 相对于 1.4 的变化
spring-erlang
不再受支持
分发包中不再包含 spring-erlang
jar。
请改用 RabbitMQ REST API。
CachingConnectionFactory
变化
控制容器队列声明行为的属性
当监听器容器消费者启动时,它们会尝试被动声明队列,以确保队列在代理上可用。
以前,如果这些声明失败(例如,因为队列不存在)或者当 HA 队列正在移动时,重试逻辑固定为三次重试,间隔五秒。
如果队列仍然不存在,则行为由 missingQueuesFatal
属性(默认值:true
)控制。
此外,对于配置为监听多个队列的容器,如果只有部分队列可用,消费者会以固定的 60 秒间隔重试缺失的队列。
declarationRetries
、failedDeclarationRetryInterval
和 retryDeclarationInterval
属性现在可配置。
有关更多信息,请参阅 消息监听器容器配置。
DefaultMessagePropertiesConverter
变化
您现在可以配置 DefaultMessagePropertiesConverter
来
确定 LongString
转换为 String
而不是 DataInputStream
的最大长度。
转换器有一个替代构造函数,它接受该值作为限制。
以前,此限制硬编码为 1024
字节。
(1.4.4 中也可用)。
@RabbitListener
改进
自动交换机、队列和绑定声明
您现在可以声明定义这些实体集合的 bean,并且 RabbitAdmin
会在建立连接时将这些内容添加到它声明的实体列表中。
有关更多信息,请参阅 声明交换机、队列和绑定的集合。
RabbitTemplate
变化
reply-address
添加
reply-address
属性已添加到 <rabbit-template>
组件中,作为 reply-queue
的替代。
有关更多信息,请参阅 请求/回复消息传递。
(在 1.4.4 中也可用作 RabbitTemplate
上的 setter)。
阻塞 receive
方法
RabbitTemplate
现在支持 receive
和 convertAndReceive
方法中的阻塞。
有关更多信息,请参阅 轮询消费者。
sendAndReceive
方法中的强制性
当使用 sendAndReceive
和 convertSendAndReceive
方法时设置 mandatory
标志,如果请求消息无法送达,则调用线程会抛出 AmqpMessageReturnedException
。
有关更多信息,请参阅 回复超时。
RabbitManagementTemplate
添加
RabbitManagementTemplate
已被引入,用于通过其 管理插件 提供的 REST API 监控和配置 RabbitMQ Broker。
有关更多信息,请参阅 RabbitMQ REST API。
监听器容器 Bean 名称 (XML)
<listener-container/>
元素上的 id
属性已被移除。
从本版本开始,<listener/>
子元素上的 id
独立用于命名为每个监听器元素创建的监听器容器 bean。
应用正常的 Spring bean 名称覆盖。
如果解析了一个具有与现有 bean 相同 id
的后续 <listener/>
,则新定义会覆盖现有定义。
以前,bean 名称由 <listener-container/>
和 <listener/>
元素的 id
属性组成。
迁移到此版本时,如果您的 <listener-container/>
元素上有 id
属性,请将其移除,并在子 <listener/>
元素上设置 id
。
但是,为了支持将容器作为组启动和停止,添加了一个新的 group
属性。
当定义此属性时,此元素创建的容器将添加到具有此名称的 bean 中,类型为 Collection<SimpleMessageListenerContainer>
。
您可以遍历此组来启动和停止容器。
类级别 @RabbitListener
@RabbitListener
注解现在可以应用于类级别。
结合新的 @RabbitHandler
方法注解,这允许您根据有效负载类型选择处理程序方法。
有关更多信息,请参阅 多方法监听器。
SimpleMessageListenerContainer
:回退支持
SimpleMessageListenerContainer
现在可以提供一个 BackOff
实例用于 consumer
启动恢复。
有关更多信息,请参阅 消息监听器容器配置。
通道关闭日志记录
引入了一种机制来控制通道关闭的日志级别。 请参阅 记录通道关闭事件。
应用程序事件
当消费者失败时,SimpleMessageListenerContainer
现在会发出应用程序事件。
有关更多信息,请参阅 消费者事件。
消费者标签配置
以前,异步消费者的消费者标签由代理生成。 在此版本中,现在可以向监听器容器提供命名策略。 请参阅 消费者标签。
匿名队列命名
从 1.5.3 版本开始,您现在可以控制 AnonymousQueue
名称的生成方式。
有关更多信息,请参阅 AnonymousQueue
。