RabbitMQ 消费者属性
以下属性仅适用于 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。