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
-
当此值不为 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。 仅当
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 绑定到死信交换机时应用的参数;与
headersdeadLetterExchangeType一起使用以指定要匹配的头部。 例如…dlqBindingArguments.x-match=any,…dlqBindingArguments.someHeader=someValue。默认值:空
- dlqDeadLetterExchange
-
如果声明了 DLQ,则分配给该队列的 DLX。
默认值:
none - dlqDeadLetterRoutingKey
-
如果声明了 DLQ,则分配给该队列的死信路由键。
默认值:
none - dlqExpires
-
未使用的死信队列被删除前的持续时间(以毫秒为单位)。
默认值:
no expiration - dlqLazy
-
使用
x-queue-mode=lazy参数声明死信队列。 请参阅 “惰性队列”。 考虑使用策略而不是此设置,因为使用策略允许在不删除队列的情况下更改设置。默认值:
false。 - dlqMaxLength
-
死信队列中的最大消息数。
默认值:
no limit - dlqMaxLengthBytes
-
死信队列中所有消息的总最大字节数。
默认值:
no limit - 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
-
声明死信队列时应用的默认存活时间(以毫秒为单位)。
默认值:
no limit - 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
-
未使用的队列被删除前的持续时间(以毫秒为单位)。
默认值:
no expiration - failedDeclarationRetryInterval
-
如果队列丢失,尝试从队列消费的尝试之间的时间间隔(以毫秒为单位)。
默认值:5000
- frameMaxHeadroom
-
当将堆栈跟踪添加到 DLQ 消息头时,为其他头保留的字节数。 所有头必须符合代理上配置的
frame_max大小。 堆栈跟踪可能很大;如果大小加上此属性超出frame_max,则堆栈跟踪将被截断。 将写入 WARN 日志;考虑增加frame_max或通过捕获异常并抛出堆栈跟踪较小的异常来减少堆栈跟踪。默认值:20000
- headerPatterns
-
用于从入站消息映射头部的模式。
默认值:
['*'](所有头部)。 - lazy
-
使用
x-queue-mode=lazy参数声明队列。 请参阅 “惰性队列”。 考虑使用策略而不是此设置,因为使用策略允许在不删除队列的情况下更改设置。默认值:
false。 - maxConcurrency
-
最大消费者数量。 当
containerType为direct时不支持。默认值:
1。 - maxLength
-
队列中的最大消息数。
默认值:
no limit - maxLengthBytes
-
队列中所有消息的总最大字节数。
默认值:
no limit - maxPriority
-
队列中消息的最大优先级 (0-255)。
默认值:
none - missingQueuesFatal
-
当找不到队列时,是否将此情况视为致命并停止监听器容器。 默认为
false,以便容器继续尝试从队列消费——例如,当使用集群且托管非 HA 队列的节点宕机时。默认值:
false - overflowBehavior
-
当超出
maxLength或maxLengthBytes时采取的操作;目前为drop-head或reject-publish,但请参阅 RabbitMQ 文档。默认值:
none - prefetch
-
预取计数。
默认值:
1。 - prefix
-
要添加到
destination和队列名称的前缀。默认值:""。
- queueBindingArguments
-
将队列绑定到交换机时应用的参数;与
headersexchangeType一起使用以指定要匹配的头部。 例如…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,binder 会将失败的消息重新发布到 DLQ,并附带额外的头部,包括最终失败原因的异常消息和堆栈跟踪。 另请参阅 frameMaxHeadroom 属性。默认值:
true - singleActiveConsumer
-
设置为 true 以将
x-single-active-consumer队列属性设置为 true。默认值:
false - transacted
-
是否使用事务通道。
默认值:
false。 - ttl
-
声明队列时应用的默认存活时间(以毫秒为单位)。
默认值:
no limit - txSize
-
ack 之间的传递次数。 当
containerType为direct时不支持。默认值:
1。