RabbitMQ 消费者属性

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

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

此外,请记住特定于绑定的属性将覆盖其在默认设置中的等效属性。

acknowledgeMode

确认模式。

默认值:AUTO

anonymousGroupPrefix

当绑定没有 group 属性时,一个匿名的、自动删除的队列会绑定到目标交换机。这类队列的默认命名策略是 anonymous.<base64 representation of a UUID>。设置此属性可以将前缀更改为非默认值。

默认值:anonymous.

autoBindDlq

是否自动声明 DLQ 并将其绑定到 Binder DLX。

默认值:false

bindingRoutingKey

将队列绑定到交换机时使用的路由键(如果 bindQueuetrue)。可以是多个键 - 参见 bindingRoutingKeyDelimiter。对于分区目标,将在每个键后附加 .<instanceIndex>

默认值:#

bindingRoutingKeyDelimiter

当此值不为 null 时,'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

DLQ 的名称

默认值:prefix+destination.dlq

deadLetterExchange

分配给队列的 DLX。仅当 autoBindDlqtrue 时相关。

默认值:`prefix+DLX`

deadLetterExchangeType

分配给队列的 DLX 类型。仅当 autoBindDlqtrue 时相关。

默认值:`direct`

deadLetterRoutingKey

分配给队列的死信路由键。仅当 autoBindDlqtrue 时相关。

默认值:destination

declareDlx

是否为目标声明死信交换机。仅当 autoBindDlqtrue 时相关。如果您有预配置的 DLX,请设置为 false

默认值:true

declareExchange

是否为目标声明交换机。

默认值:true

delayedExchange

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

默认值:false

dlqBindingArguments

绑定 DLQ 到死信交换机时应用的参数;与 headers deadLetterExchangeType 一起使用以指定要匹配的头。例如 …​dlqBindingArguments.x-match=any…​dlqBindingArguments.someHeader=someValue

默认值:空

dlqDeadLetterExchange

如果声明了 DLQ,则指定要分配给该队列的 DLX。

默认值:none

dlqDeadLetterRoutingKey

如果声明了 DLQ,则指定要分配给该队列的死信路由键。

默认值:none

dlqExpires

未使用的死信队列在多久后被删除(毫秒)。

默认值:不过期

dlqLazy

使用 x-queue-mode=lazy 参数声明死信队列。参见“Lazy Queues”。考虑使用策略代替此设置,因为使用策略可以在不删除队列的情况下更改设置。

默认值:false

dlqMaxLength

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

默认值:无限制

dlqMaxLengthBytes

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

默认值:无限制

dlqMaxPriority

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

默认值:none

dlqOverflowBehavior

当超过 dlqMaxLengthdlqMaxLengthBytes 时采取的操作;当前是 drop-headreject-publish,请参考 RabbitMQ 文档。

默认值:none

dlqQuorum.deliveryLimit

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

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

dlqQuorum.enabled

为 true 时,创建一个 quorum 死信队列而不是经典队列。

默认值:false

dlqQuorum.initialGroupSize

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

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

dlqSingleActiveConsumer

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

默认值:false

dlqTtl

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

默认值:无限制

durableSubscription

订阅是否应为持久的。仅当同时设置了 group 时生效。

默认值:true

exchangeAutoDelete

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

默认值:true

exchangeDurable

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

默认值:true

exchangeType

交换机类型:对于非分区目标是 directfanoutheaderstopic,对于分区目标是 directheaderstopic

默认值:topic

exclusive

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

默认值:false

expires

未使用的队列在多久后被删除(毫秒)。

默认值:不过期

failedDeclarationRetryInterval

如果队列丢失,尝试从队列消费之间的间隔(毫秒)。

默认值:5000

frameMaxHeadroom

将堆栈跟踪添加到 DLQ 消息头时,为其他头保留的字节数。所有头必须符合代理上配置的 frame_max 大小。堆栈跟踪可能很大;如果大小加上此属性超过 frame_max,则堆栈跟踪将被截断。将记录一条 WARN 日志;考虑增加 frame_max 或通过捕获异常并抛出一个具有较小堆栈跟踪的异常来减小堆栈跟踪的大小。

默认值:20000

headerPatterns

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

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

lazy

使用 x-queue-mode=lazy 参数声明队列。参见“Lazy Queues”。考虑使用策略代替此设置,因为使用策略可以在不删除队列的情况下更改设置。

默认值:false

maxConcurrency

最大消费者数量。当 containerTypedirect 时不支持。

默认值:1

maxLength

队列中的最大消息数量。

默认值:无限制

maxLengthBytes

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

默认值:无限制

maxPriority

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

默认值:none

missingQueuesFatal

当找不到队列时,是否将此条件视为致命错误并停止监听器容器。默认为 false,以便容器继续尝试从队列消费——例如,在使用集群且托管非 HA 队列的节点宕机时。

默认值:false

overflowBehavior

当超过 maxLengthmaxLengthBytes 时采取的操作;当前是 drop-headreject-publish,请参考 RabbitMQ 文档。

默认值:none

prefetch

预取数量。

默认值:1

prefix

要添加到目标和队列名称的前缀。

默认值:""。

queueBindingArguments

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

默认值:空

queueDeclarationRetries

如果队列丢失,尝试从队列消费的重试次数。仅当 missingQueuesFataltrue 时相关。否则,容器将无限期地重试。当 containerTypedirect 时不支持。

默认值:3

queueNameGroupOnly

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

默认值:false。

quorum.deliveryLimit

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

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

quorum.enabled

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

默认值:false

quorum.initialGroupSize

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

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

recoveryInterval

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

默认值:5000

requeueRejected

当重试被禁用或 republishToDlqfalse 时,投递失败的消息是否应该被重新排队。

默认值:false

republishDeliveryMode

republishToDlqtrue 时,指定重新发布消息的投递模式。

默认值:DeliveryMode.PERSISTENT

republishToDlq

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

默认值:true

singleActiveConsumer

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

默认值:false

transacted

是否使用事务性通道。

默认值:false

ttl

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

默认值:无限制

txSize

两次确认之间的投递数量。当 containerTypedirect 时不支持。

默认值:1