使用 RabbitMQ 的消费者属性
以下属性仅适用于 Rabbit 消费者,并且必须以 spring.cloud.stream.rabbit.bindings.<channelName>.consumer. 为前缀。
但是,如果需要将同一组属性应用于大多数绑定,为了防止重复,Spring Cloud Stream 支持在格式为 spring.cloud.stream.rabbit.default.consumer.<property>=<value> 的所有通道上设置值。
也请记住,绑定特定属性会将其默认值覆盖。
- 确认模式
-
确认模式。
默认值:
AUTO。 - 匿名组前缀
-
当绑定没有
group属性时,会将一个匿名、自动删除的队列绑定到目标交换机。
此类队列的默认命名策略会导致队列命名为anonymous.<base64 representation of a UUID>。
将此属性设置为其他前缀可更改默认值。默认值:
anonymous.。 - 自动绑定死信队列
-
是否自动声明死信队列(DLQ)并将其绑定到绑定器的死信交换(DLX)。
默认值:
false。 - 绑定路由键
-
用于将队列绑定到交换机的路由键(如果
bindQueue是true)。可以有多个键——参见bindingRoutingKeyDelimiter。对于分区目的地,将在每个键后追加-<instanceIndex>。默认值:
#。 - 绑定路由键分隔符
-
当此值不为 null 时,将把 'bindingRoutingKey' 视为由该值分隔的键列表;通常使用逗号作为分隔符。
默认值:
null。 - 绑定队列
-
是否声明队列并将其绑定到目标交换机。
如果已设置自己的基础设施并且先前创建并绑定了队列,请将其设置为false。默认值:
true。 - 消费者标记前缀
-
用于创建消费者标签;每次创建一个消费者时,将会附加
#n。
示例:${spring.application.name}-${spring.cloud.stream.bindings.input.group}-${spring.cloud.stream.instance-index}。默认值:无 - 代理将生成随机的消费者标签。
- 容器类型
-
选择要使用的监听器容器类型。 有关更多信息,请参阅Spring AMQP文档中的选择容器部分。 另请参见[rabbitmq-stream]。
默认值:
simple - 死信队列名称
-
死信队列的名称
默认值:
prefix+destination.dlq - 死信交换
-
一个DLX分配到队列。 仅当
autoBindDlq为true时相关。默认值:'前缀+死信交换'
- 死信交换机类型
-
要分配给队列的DLX的类型。
仅当autoBindDlq为true时相关。默认值:'direct'
- 死信路由键
-
分配给队列的死信路由密钥。仅在
autoBindDlq是true时相关。默认值:
destination - 声明死信交换器
-
是否为目的地声明死信交换? 相关仅当
autoBindDlq为true时。 若已预配置DLX,请设为false。默认值:
true。 - 声明交换机
-
是否为目的地声明交换机。
默认值:
true。 - 延迟交换
-
是否将交换声明为
Delayed Message Exchange。
需要在代理上安装延迟消息交换插件。
将x-delayed-type参数设置为exchangeType。默认值:
false。 - 延迟队列绑定参数
-
绑定死信交换时应用于死信队列(dlq)的参数;与
headersdeadLetterExchangeType结合使用,用于指定要匹配的头部信息。例如…dlqBindingArguments.x-match=any,…dlqBindingArguments.someHeader=someValue。默认:空
- 死信队列死信交换机
-
如果声明了一个死信队列(DLQ),则需指定一个死信交换器(DLX)来分配给该队列。
默认值:
none - 死信队列死信路由键
-
如果声明了死信队列,则需要指定一个分配给该队列的死信路由键。
默认值:
none - 延迟队列到期
-
未使用的死信队列在被删除前的等待时间(以毫秒为单位)。
默认值:
no expiration - 懒加载
-
使用
x-queue-mode=lazy参数声明死信队列。参见“延迟队列”。建议改用策略而不是此设置,因为策略允许在不删除队列的情况下更改该设置。默认值:
false。 - 最大dlq长度
-
死信队列中的最大消息数。
默认值:
no limit - 最大字节数
-
死信队列中所有消息的最大总字节数。
默认值:
no limit - 最大优先级队列
-
死信队列中消息的最大优先级(0-255)。
默认值:
none - 队列溢出时的行为
-
当超过
dlqMaxLength或dlqMaxLengthBytes时要采取的操作;目前为drop-head或reject-publish,但请参考RabbitMQ文档。默认值:
none - dlqQuorum.deliveryLimit
-
当
quorum.enabled=true时,设置一个投递限制,超过该限制后消息将被丢弃或转为死信。默认:无 - 将应用代理程序默认设置。
- dlqQuorum.enabled
-
当为 true 时,创建一个法定人数死信队列而不是经典队列。
(默认值:false)
- dlqQuorum.initialGroupSize
-
当
quorum.enabled=true时,设置初始法定人数大小。默认:无 - 将应用代理程序默认设置。
- 单个活动消费者
-
设置为 true 可将
x-single-active-consumer队列属性设为 true。默认值:
false - dlqTtl
-
声明死信队列时应用的默认生存时间(以毫秒为单位)。
默认值:
no limit - 持久化订阅
-
订阅是否应该持久化。只有在同时设置
group时才有效。默认值:
true。 - 交换自动删除
-
如果
declareExchange为真,则表示交换机是否应该自动删除(即在最后一个队列被删除后将其移除)。默认值:
true。 - 交换机持久化
-
如果
declareExchange为真,则表示交换机是否应具有持久性(即,在代理重启后仍然存在)。默认值:
true。 - 交易类型
-
交换类型:
direct、fanout、headers或topic表示非分区目的地,而direct、标题或topic表示分区目的地。默认值:
topic。 - 独家
-
是否创建独占消费者。 当此值为
true时,并发应设置为 1。 通常在需要严格顺序但启用热备用实例以在发生故障后接管时使用。 参见recoveryInterval,它控制备用实例尝试消费的频率。 当使用 RabbitMQ 3.8 或更高版本时,建议改用singleActiveConsumer。默认值:
false。 - 到期
-
多久以后未使用的队列会被删除(以毫秒为单位)。
默认值:
no expiration - 声明失败重试间隔
-
如果队列缺失,则尝试从队列中消耗之间的间隔(以毫秒为单位)。
默认值:5000
- 框架最大回程
-
将堆栈跟踪添加到死信队列(DLQ)消息头时,为其他标头保留的字节数。所有标头必须符合代理上配置的
frame_max大小。
堆栈跟踪可能很大;如果此属性加上堆栈跟踪的大小超过frame_max,则堆栈跟踪将被截断。
将会记录一个警告日志;考虑增加frame_max或通过捕获异常并抛出自定义较小堆栈跟踪的异常来减少堆栈跟踪。默认值:20000
- headerPatterns
-
从入站消息映射标头的模式。
默认:
['*'](所有头部)。 - 懒加载
-
使用
x-queue-mode=lazy参数声明队列。
参见 “延迟队列”。
建议改用策略,而不是此设置,因为策略允许在不删除队列的情况下更改设置。默认值:
false。 - 最大并发数
-
消费者的最大数量。
当containerType为direct时不支持。默认值:
1。 - 最大长度
-
队列中消息的最大数量。
默认值:
no limit - 最大长度字节
-
队列中所有消息的最大总字节数。
默认值:
no limit - 最高严重程度
-
队列中消息的最大优先级(0-255)。
默认值:
none - 缺少队列致命
-
当找不到队列时,是否将此情况视为致命错误并停止监听器容器。默认值为
false,因此容器会不断尝试从队列中消费消息——例如,在使用集群时,如果托管非高可用性队列的节点宕机。默认值:
false - 溢出行为
-
当超过
maxLength或maxLengthBytes时要采取的操作;目前为drop-head或reject-publish,但请参考RabbitMQ文档。默认值:
none - 预取
-
预取计数。
默认值:
1。 - 前缀
-
要添加到
destination和队列名称前缀。默认值:""。
- 队列绑定参数
-
绑定队列到交换时应用的参数;用于指定要匹配的标头,例如
…queueBindingArguments.x-match=any、…queueBindingArguments.someHeader=someValue。
使用headers或exchangeType来指定要匹配的标头。默认:空
- 队列声明重试次数
-
如果队列缺失,从队列中重新消费的重试次数。
仅当missingQueuesFatal是true时有效。
否则,容器将无限期地重试。
不支持当containerType是direct的情况。默认值:
3 - 仅队列名组
-
当为 true 时,从队列名称等于
group的队列中消费。否则队列名称为destination.group。例如,在使用 Spring Cloud Stream 来从现有的 RabbitMQ 队列进行消费时,这很有用。默认值:false。
- quorum.deliveryLimit
-
当
quorum.enabled=true时,设置一个投递限制,超过该限制后消息将被丢弃或转为死信。默认:无 - 将应用代理程序默认设置。
- quorum.enabled
-
为真时,创建一个法定人数队列而不是经典队列。
(默认值:false)
- quorum.initialGroupSize
-
当
quorum.enabled=true时,设置初始法定人数大小。默认:无 - 将应用代理程序默认设置。
- 恢复间隔
-
连接恢复尝试之间的间隔,单位为毫秒。
默认值:
5000。 - 重新排队拒绝的
-
当重试被禁用或
republishToDlq时,是否应重新排队交付失败的消息。false表示是。默认值:
false。
- 重新发布配送模式
-
当
republishToDlq是true时,指定重新发布的消息的传递模式。默认值:
DeliveryMode.PERSISTENT - 转发到死信队列
-
默认情况下,重试次数用尽后仍失败的消息会被拒绝。如果配置了死信队列(DLQ),RabbitMQ会将失败的消息(未更改)路由到DLQ。如果设置为
true,绑定器会将失败的消息重新发布到DLQ,并添加额外的标题,包括最终失败原因中的异常消息和堆栈跟踪。另请参阅frameMaxHeadroom属性。默认值:
true - singleActiveConsumer
-
设置为 true 可将
x-single-active-consumer队列属性设为 true。默认值:
false - 事务性
-
是否使用事务通道。
默认值:
false。 - TTL
-
声明队列时要应用的默认存活时间(以毫秒为单位)。
默认值:
no limit - 字体大小
-
在确认之间交付的数量。
当containerType是direct时不支持。默认值:
1。