跳到主要内容
版本:5.0.1

RabbitMQ 消费者属性

DeepSeek V3 中英对照 RabbitMQ Consumer Properties

以下属性仅适用于 RabbitMQ 消费者,且必须以 spring.cloud.stream.rabbit.bindings.<channelName>.consumer. 为前缀。

然而,如果同一组属性需要应用于大多数绑定,为了避免重复,Spring Cloud Stream 支持为所有通道设置值,格式为 spring.cloud.stream.rabbit.default.consumer.<property>=<value>。

另外,请注意,绑定特定属性会覆盖默认设置中的等效属性。

acknowledgeMode

确认模式。

默认值:AUTO。

anonymousGroupPrefix

当绑定没有 group 属性时,一个匿名的、自动删除的队列会被绑定到目标交换机。此类队列的默认命名策略会生成一个名为 anonymous.<UUID的base64表示> 的队列。设置此属性可以将前缀更改为默认值以外的内容。

默认值:anonymous。

autoBindDlq

是否自动声明死信队列并将其绑定到绑定器的死信交换机。

默认值:false。

bindingRoutingKey

用于将队列绑定到交换机的路由键(如果 bindQueue 为 true)。可以是多个键 - 请参阅 bindingRoutingKeyDelimiter。对于分区目的地,每个键会附加 -<instanceIndex>。

默认值:#。

bindingRoutingKeyDelimiter

当此值不为空时,'bindingRoutingKey' 将被视为由该值分隔的键列表;通常使用逗号作为分隔符。

默认值:null。

bindQueue

是否声明队列并将其绑定到目标交换机。如果您已经设置了自己的基础设施,并且之前已经创建并绑定了队列,请将其设置为 false。

默认值:true。

consumerTagPrefix

用于创建消费者标签;将在每个创建的消费者后附加 #n,其中 n 递增。示例:${spring.application.name}-${spring.cloud.stream.bindings.input.group}-${spring.cloud.stream.instance-index}。

默认值:无 - 代理将生成随机消费者标签。

containerType

选择要使用的监听器容器类型。有关更多信息,请参阅 Spring AMQP 文档中的选择容器。另请参阅[rabbitmq-stream]。

默认值:simple

deadLetterQueueName

死信队列的名称

默认值:prefix+destination.dlq

deadLetterExchange

要分配给队列的 DLX。仅在 autoBindDlq 为 true 时相关。

默认值: 'prefix+DLX'

deadLetterExchangeType

要分配给队列的 DLX 类型。仅在 autoBindDlq 为 true 时相关。

默认值:'direct'

deadLetterRoutingKey

分配给队列的死信路由键。仅在 autoBindDlq 为 true 时相关。

默认值:destination

declareDlx

是否声明目标队列的死信交换机。仅在 autoBindDlq 为 true 时相关。如果您已有预配置的 DLX,请设置为 false。

默认值:true。

declareExchange

是否为目标声明交换。

默认值:true。

delayedExchange

是否将交换机声明为延迟消息交换机。需要在代理上安装延迟消息交换插件。x-delayed-type参数设置为exchangeType。

默认值:false。

dlqBindingArguments

绑定死信队列到死信交换机时应用的参数;与 headers deadLetterExchangeType 一起使用,用于指定匹配的头部信息。例如 …​dlqBindingArguments.x-match=any、…​dlqBindingArguments.someHeader=someValue。

默认值:空

dlqDeadLetterExchange

如果声明了死信队列(DLQ),则需要为其分配一个死信交换机(DLX)。

默认值:none

dlqDeadLetterRoutingKey

如果声明了死信队列,则为其分配一个死信路由键。

默认值:none

dlqExpires

未使用的死信队列在被删除前会保留多长时间(以毫秒为单位)。

默认值:no expiration

dlqLazy

使用 x-queue-mode=lazy 参数声明死信队列。请参阅“惰性队列”。建议使用策略而非此设置,因为使用策略可以在不删除队列的情况下更改设置。

默认值:false。

dlqMaxLength

死信队列中的最大消息数量。

默认值:无限制

dlqMaxLengthBytes

所有消息的死信队列中总字节数的最大值。

默认值:无限制

dlqMaxPriority

死信队列中消息的最大优先级(0-255)。

默认值:none

dlqOverflowBehavior

当 dlqMaxLength 或 dlqMaxLengthBytes 超出限制时采取的操作;目前为 drop-head 或 reject-publish,但请参考 RabbitMQ 文档。

默认值:none

dlqQuorum.deliveryLimit

当 quorum.enabled=true 时,设置一个投递限制,超过此限制后消息将被丢弃或进入死信队列。

默认值:无 - 将应用代理默认值。

dlqQuorum.enabled

当为 true 时,创建一个仲裁死信队列而非经典队列。

默认值:false

dlqQuorum.initialGroupSize

当 quorum.enabled=true 时,设置初始仲裁大小。

默认值:无 - 将应用代理默认值。

dlqSingleActiveConsumer

设置为 true 可将 x-single-active-consumer 队列属性设为 true。

默认值:false

dlqTtl

声明死信队列时应用的默认生存时间(以毫秒为单位)。

默认值:无限制

durableSubscription

订阅是否应具有持久性。仅在同时设置了 group 时才有效。

默认值:true。

exchangeAutoDelete

如果 declareExchange 为 true,是否应自动删除该交换器(即,在最后一个队列被移除后删除该交换器)。

默认值:true。

exchangeDurable

如果 declareExchange 为 true,则指定交换机是否应具有持久性(即,在代理重启后仍然存在)。

默认值:true。

exchangeType

交换类型:对于非分区目的地为 direct、fanout、headers 或 topic;对于分区目的地为 direct、headers 或 topic。

默认值:topic。

独占

是否创建独占消费者。当此值为 true 时,并发数应为 1。通常在需要严格顺序但允许热备实例在故障后接管时使用。请参阅 recoveryInterval,该参数控制备用实例尝试消费的频率。如果使用 RabbitMQ 3.8 或更高版本,请考虑改用 singleActiveConsumer。

默认值:false。

expires

未使用的队列在被删除前会保留多长时间(以毫秒为单位)。

默认值:no expiration

failedDeclarationRetryInterval

如果队列缺失,尝试从队列消费的间隔(以毫秒为单位)。

默认值:5000

frameMaxHeadroom

将堆栈跟踪添加到死信队列消息头时,为其他头部预留的字节数。所有头部必须适配代理上配置的 frame_max 大小。堆栈跟踪可能很大;如果其大小加上此属性超过 frame_max,则堆栈跟踪将被截断。系统将记录 WARN 级别日志;建议通过捕获异常并抛出堆栈跟踪较小的异常来增加 frame_max 或减少堆栈跟踪。

默认值:20000

headerPatterns

用于从入站消息映射的标头模式。

默认值:['*'](所有标题)。

lazy

使用 x-queue-mode=lazy 参数声明队列。请参阅 “惰性队列”。建议使用策略而非此设置,因为使用策略可以在不删除队列的情况下更改设置。

默认值:false。

maxConcurrency

最大消费者数量。当 containerType 为 direct 时不支持。

默认值:1。

maxLength

队列中的最大消息数量。

默认值:无限制

maxLengthBytes

队列中所有消息的总字节数上限。

默认值:无限制

maxPriority

队列中消息的最大优先级(0-255)。

默认值:none

missingQueuesFatal

当队列无法找到时,是否将此情况视为致命错误并停止监听器容器。默认值为 false,这样容器会持续尝试从队列消费——例如,在使用集群且承载非高可用队列的节点宕机时。

默认值:false

overflowBehavior

当 maxLength 或 maxLengthBytes 超出限制时采取的操作;目前为 drop-head 或 reject-publish,但请参考 RabbitMQ 文档。

默认值:none

prefetch

预取数量。

默认值:1。

prefix

一个前缀,将添加到 destination 和队列的名称中。

默认值:""。

queueBindingArguments

绑定队列到交换机时应用的参数;与 headers exchangeType 一起使用,用于指定要匹配的头部信息。例如 …​queueBindingArguments.x-match=any、…​queueBindingArguments.someHeader=someValue。

默认值:空

queueDeclarationRetries

如果队列缺失,重试消费的次数。仅当 missingQueuesFatal 为 true 时有效。否则,容器将无限期重试。当 containerType 为 direct 时不支持此功能。

默认值:3

queueNameGroupOnly

当设置为 true 时,从名称等于 group 的队列中消费。否则,队列名称为 destination.group。例如,在使用 Spring Cloud Stream 从现有的 RabbitMQ 队列消费时,这非常有用。

默认值:false。

quorum.deliveryLimit

当 quorum.enabled=true 时,设置一个投递限制,超过此限制后消息将被丢弃或进入死信队列。

默认值:无 - 将应用代理默认值。

quorum.enabled

当为 true 时,创建一个仲裁队列而不是经典队列。

默认值:false

quorum.initialGroupSize

当 quorum.enabled=true 时,设置初始仲裁大小。

默认值:无 - 将应用代理默认值。

recoveryInterval

连接恢复尝试之间的间隔,以毫秒为单位。

默认值:5000。

requeueRejected

当重试被禁用或 republishToDlq 为 false 时,投递失败的消息是否应重新入队。

默认值:false。

republishDeliveryMode

当 republishToDlq 为 true 时,指定重新发布消息的投递模式。

默认值:DeliveryMode.PERSISTENT

republishToDlq

默认情况下,重试次数耗尽后失败的消息会被拒绝。如果配置了死信队列(DLQ),RabbitMQ会将失败的消息(未经修改)路由到DLQ。如果设置为 true,绑定器会将失败的消息重新发布到DLQ,并添加额外的头部信息,包括最终失败原因中的异常消息和堆栈跟踪。另请参阅 frameMaxHeadroom 属性。

默认值:true

singleActiveConsumer

设置为 true 可将 x-single-active-consumer 队列属性设为 true。

默认值:false

已处理

是否使用事务通道。

默认值:false。

ttl

队列声明时应用的默认生存时间(以毫秒为单位)。

默认值:无限制

txSize

确认之间的交付数量。当 containerType 为 direct 时不支持。

默认值:1。