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 并将其绑定到 binder DLX。
默认值: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
DLQ 的名称
默认值: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
是否将交换器声明为 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
当 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
。
exclusive
是否创建独占消费者。当此值为 true
时,并发数应为 1。通常在需要严格顺序时使用,但在故障后启用热备实例接管时也会使用。请参阅 recoveryInterval
,它控制备用实例尝试消费的频率。如果使用 RabbitMQ 3.8 或更高版本,请考虑改用 singleActiveConsumer
。
默认值:false
。
expires
未使用的队列在被删除之前的时间(以毫秒为单位)。
默认值:无过期时间
failedDeclarationRetryInterval
尝试从队列中消费的间隔时间(以毫秒为单位),如果队列缺失。
默认值:5000
frameMaxHeadroom
是用于指定帧的最大预留空间的参数。
在将堆栈跟踪添加到 DLQ 消息头时为其他头保留的字节数。所有头必须适合代理上配置的 frame_max
大小。堆栈跟踪可能很大;如果其大小加上此属性超过 frame_max
,则堆栈跟踪将被截断。将记录一条 WARN 日志;考虑增加 frame_max
或通过捕获异常并抛出具有较小堆栈跟踪的异常来减少堆栈跟踪。
默认值:20000
headerPatterns
从入站消息映射标头的模式。
默认值:['*']
(所有标题)。
懒惰
使用 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
交换类型一起使用,用于指定要匹配的头部。例如 …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
时,设置一个传递限制,超过该限制后消息将被丢弃或进入死信队列。
默认值:无 - 将应用 broker 的默认值。
quorum.enabled
当为 true
时,创建一个仲裁队列而不是经典队列。
默认值:false
quorum.initialGroupSize
当 quorum.enabled=true
时,设置初始的仲裁大小。
默认值:无 - 将应用 broker 默认值。
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
transacted
是否使用事务性通道。
默认值:false
。
ttl
声明队列时应用的默认生存时间(以毫秒为单位)。
默认值:无限制
txSize
ack 之间的交付次数。当 containerType
为 direct
时不支持。
默认值:1
。