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
-
是否将交换机声明为
延迟消息交换机
。需要代理上的延迟消息交换机插件。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
-
当超过
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
-
要从入站消息映射的头模式。
默认值:
['*']
(所有头)。 - lazy
-
使用
x-queue-mode=lazy
参数声明队列。请参见 “Lazy Queues”。请考虑使用策略而不是此设置,因为使用策略允许更改设置而不删除队列。默认值:
false
。 - maxConcurrency
-
最大消费者数。当
containerType
为direct
时不受支持。默认值:
1
。 - maxLength
-
队列中的最大消息数。
默认值:
无限制
- maxLengthBytes
-
队列中所有消息的总字节数上限。
默认值:
无限制
- maxPriority
-
队列中消息的最大优先级 (0-255)。
默认值:
none
- missingQueuesFatal
-
当队列未找到时,是否将该条件视为致命错误并停止监听器容器。默认为
false
,以便容器继续尝试从队列中消费,例如,在使用集群且托管非 HA 队列的节点宕机时。默认值:
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
- transacted
-
是否使用事务通道。
默认值:
false
。 - ttl
-
声明队列时应用的默认生存时间(以毫秒为单位)。
默认值:
无限制
- txSize
-
两次确认之间的传递次数。当
containerType
为direct
时不支持。默认值:
1
。