RabbitMQ 消费者属性

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

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

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

acknowledgeMode

确认模式。

默认值:`AUTO`。

anonymousGroupPrefix

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

默认值:`anonymous.`。

autoBindDlq

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

默认值:`false`。

bindingRoutingKey

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

默认值:`#`。

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

DLQ 的名称

默认值:prefix+destination.dlq

deadLetterExchange

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

默认值:'prefix+DLX'

deadLetterExchangeType

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

默认值:'direct'

deadLetterRoutingKey

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

默认值:destination

declareDlx

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

默认值:`true`。

declareExchange

是否为目标声明交换机。

默认值:`true`。

delayedExchange

是否将交换机声明为延迟消息交换机。需要代理上的延迟消息交换机插件。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参数声明死信队列。请参见“延迟队列”。建议使用策略而不是此设置,因为使用策略允许更改设置而无需删除队列。

默认值:`false`。

dlqMaxLength

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

默认值:无限制

dlqMaxLengthBytes

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

默认值:无限制

dlqMaxPriority

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

默认值:none

dlqOverflowBehavior

超过dlqMaxLengthdlqMaxLengthBytes时要采取的操作;当前为drop-headreject-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

交换机类型:对于非分区目标为directfanoutheaderstopic,对于分区目标为direct、headers 或topic

默认值: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参数声明队列。请参见“延迟队列”。建议使用策略而不是此设置,因为使用策略允许更改设置而无需删除队列。

默认值:`false`。

maxConcurrency

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

默认值:1

maxLength

队列中的最大消息数。

默认值:无限制

maxLengthBytes

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

默认值:无限制

maxPriority

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

默认值:none

missingQueuesFatal

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

默认值:false

overflowBehavior

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

默认值:none

prefetch

预取计数。

默认值:1

prefix

要添加到destination和队列名称之前的后缀。

默认值:""。

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,则创建仲裁队列而不是经典队列。

默认值:false

quorum.initialGroupSize

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

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

recoveryInterval

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

默认值:5000

requeueRejected

禁用重试或republishToDlqfalse时,是否应重新排队传递失败。

默认值:`false`。

republishDeliveryMode

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

默认值:DeliveryMode.PERSISTENT

republishToDlq

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

默认值:true

singleActiveConsumer

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

默认值:false

transacted

是否使用事务通道。

默认值:`false`。

ttl

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

默认值:无限制

txSize

确认之间的交付数量。当containerTypedirect时不支持。

默认值:1