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