RabbitMQ 消費者屬性
以下屬性僅適用於 RabbitMQ 消費者,並且必須以 spring.cloud.stream.rabbit.bindings.<channelName>.consumer.
為字首。
但是,如果同一組屬性需要應用於大多數繫結,為了避免重複,Spring Cloud Stream 支援為所有通道設定值,格式為 spring.cloud.stream.rabbit.default.<property>=<value>
。
此外,請記住特定於繫結的屬性將覆蓋其在預設設定中的等效屬性。
- acknowledgeMode
-
確認模式。
預設值:
AUTO
。 - anonymousGroupPrefix
-
當繫結沒有
group
屬性時,一個匿名的、自動刪除的佇列會繫結到目標交換機。這類佇列的預設命名策略是anonymous.<base64 representation of a UUID>
。設定此屬性可以將字首更改為非預設值。預設值:
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 到死信交換機時應用的引數;與
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 時,建立一個 quorum 死信佇列而不是經典佇列。
預設值:false
- dlqQuorum.initialGroupSize
-
當
quorum.enabled=true
時,設定初始 quorum 大小。預設值:無 - 將應用代理預設設定。
- 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
-
要新增到目標和佇列名稱的字首。
預設值:""。
- 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 時,建立一個 quorum 佇列而不是經典佇列。
預設值:false
- quorum.initialGroupSize
-
當
quorum.enabled=true
時,設定初始 quorum 大小。預設值:無 - 將應用代理預設設定。
- 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
-
宣告佇列時應用的預設生存時間(毫秒)。
預設值:無限制
- txSize
-
兩次確認之間的投遞數量。當
containerType
為direct
時不支援。預設值:
1
。