1.3 版本相较于 1.2 版本的变更
监听器并发性
监听器容器现在支持根据工作负载动态调整消费者数量,或者您可以在不中断容器的情况下程序化地更改并发数。请参阅 监听器并发。
监听器队列
监听器容器现在允许在运行时修改其监听的队列。此外,如果其配置的至少一个队列可用,则容器现在会启动。请参阅 监听器容器队列
此监听器容器现在在启动期间重新声明任何自动删除的队列。请参阅 auto-delete 队列。
消费者优先级
监听器容器现在支持消费者参数,允许设置 x-priority 参数。
参见 消费者优先级。
专属消费者
现在,您可以通过单个 exclusive 消费者配置 SimpleMessageListenerContainer,从而阻止其他消费者监听该队列。请参阅 独占消费者。
Rabbit Admin
现在,无论 durable、autoDelete 和 exclusive 设置为何值,代理均可自动生成队列名称。
参见 配置代理。
直接交换绑定
之前,从 binding 元素的 direct-exchange 配置中省略 key 属性会导致队列或交换机以空字符串作为路由键进行绑定。现在,它将使用提供的 Queue 或 Exchange 的名称进行绑定。如果您希望使用空字符串作为路由键进行绑定,则需要指定 key=""。
缓存连接工厂
现在,您可以配置缓存连接工厂,以缓存 Connection 个实例及其 Channel 个实例,而不是使用单个连接并仅缓存 Channel 个实例。
参见 连接与资源管理。
绑定参数
现在,<binding> 的 <exchange> 支持解析 <binding-arguments> 子元素。
您现在可以通过 key/value 属性对(用于匹配单个头部)或通过 <binding-arguments> 子元素(允许匹配多个头部)来配置 <binding> 的 <headers-exchange>。
这些选项互斥。
参见 头部交换。
路由连接工厂
已引入一个新的 SimpleRoutingConnectionFactory。它允许配置 ConnectionFactories 映射,以在运行时确定所使用的目标 ConnectionFactory。参见 路由连接工厂。
MessageBuilder和MessagePropertiesBuilder
现在提供了用于构建消息或消息属性的“流畅式API”。
请参阅 消息构建器API。
RetryInterceptorBuilder变更
现在提供了一种用于构建监听器容器重试拦截器的“流畅式 API”。
请参阅 同步操作中的失败及重试选项。
RepublishMessageRecoverer添加
此新的 MessageRecoverer 提供了在重试耗尽时,将失败的消息发布到另一个队列(包括堆栈跟踪信息在头部)的功能。
参见 消息监听器与异步情况。
默认错误处理器(自 1.3.2 版本起)
已向监听器容器添加默认值 ConditionalRejectingErrorHandler。
此错误处理器可检测严重的消息转换问题,并指示容器拒绝该消息,以防止代理不断重新投递无法转换的消息。
请参阅 异常处理。
监听器容器missingQueuesFatal属性(自 1.3.5 版本起)
The SimpleMessageListenerContainer now has a property called missingQueuesFatal (default: true).
Previously, missing queues were always fatal.
See 消息监听容器配置.