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}
。預設值:無 - Broker 將產生隨機消費者標籤。
- containerType
-
選擇要使用的 Listener Container 類型。有關更多資訊,請參閱 Spring AMQP 文件中的 選擇 Container。另請參閱 [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
-
是否將交換器宣告為
延遲訊息交換器
。需要在 Broker 上安裝延遲訊息交換器外掛程式。x-delayed-type
引數設定為exchangeType
。預設值:
false
。 - dlqBindingArguments
-
將 DLQ 綁定到死信交換器時套用的引數;與
headers
deadLetterExchangeType
一起使用,以指定要比對的標頭。例如…dlqBindingArguments.x-match=any
、…dlqBindingArguments.someHeader=someValue
。預設值:空
- dlqDeadLetterExchange
-
如果宣告了 DLQ,則是要指派給該佇列的 DLX。
預設值:
none
- dlqDeadLetterRoutingKey
-
如果宣告了 DLQ,則是要指派給該佇列的死信路由金鑰。
預設值:
none
- dlqExpires
-
未使用的死信佇列在刪除前經過的時間(以毫秒為單位)。
預設值:
no expiration
- dlqLazy
-
使用
x-queue-mode=lazy
引數宣告死信佇列。請參閱 「Lazy Queues」。考慮使用策略而不是此設定,因為使用策略允許在不刪除佇列的情況下變更設定。預設值:
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
時,設定投遞限制,超過此限制後,訊息將被丟棄或成為死信。預設值:無 - 將套用 Broker 預設值。
- dlqQuorum.enabled
-
為 true 時,建立仲裁死信佇列而不是傳統佇列。
預設值:false
- dlqQuorum.initialGroupSize
-
當
quorum.enabled=true
時,設定初始仲裁大小。預設值:無 - 將套用 Broker 預設值。
- dlqSingleActiveConsumer
-
設定為 true 以將
x-single-active-consumer
佇列屬性設定為 true。預設值:
false
- dlqTtl
-
宣告時要套用至死信佇列的預設存活時間(以毫秒為單位)。
預設值:
no limit
- durableSubscription
-
訂閱是否應為持久性。僅在也設定了
group
時有效。預設值:
true
。 - exchangeAutoDelete
-
如果
declareExchange
為 true,則交換器是否應自動刪除(即在移除最後一個佇列後移除)。預設值:
true
。 - exchangeDurable
-
如果
declareExchange
為 true,則交換器是否應為持久性(即在 Broker 重新啟動後仍然存在)。預設值:
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 訊息標頭時,要為其他標頭保留的位元組數。所有標頭都必須符合 Broker 上設定的
frame_max
大小。堆疊追蹤可能很大;如果大小加上此屬性超過frame_max
,則堆疊追蹤將被截斷。將會寫入 WARN 記錄;考慮增加frame_max
或透過捕獲異常並拋出堆疊追蹤較小的異常來減少堆疊追蹤。預設值:20000
- headerPatterns
-
要從入站訊息對應的標頭模式。
預設值:
['*']
(所有標頭)。 - lazy
-
使用
x-queue-mode=lazy
引數宣告佇列。請參閱 「Lazy Queues」。考慮使用策略而不是此設定,因為使用策略允許在不刪除佇列的情況下變更設定。預設值:
false
。 - maxConcurrency
-
消費者的最大數量。當
containerType
為direct
時,不支援。預設值:
1
。 - maxLength
-
佇列中的最大訊息數。
預設值:
no limit
- maxLengthBytes
-
來自所有訊息的佇列中的最大總位元組數。
預設值:
no limit
- maxPriority
-
佇列中訊息的最大優先順序 (0-255)。
預設值:
none
- missingQueuesFatal
-
當找不到佇列時,是否將該情況視為嚴重錯誤並停止 Listener Container。預設為
false
,以便 Container 繼續嘗試從佇列消費 — 例如,當使用叢集且託管非 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
時相關。否則,Container 將無限期地重試。當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
,binder 會將失敗的訊息重新發布到 DLQ,並附加額外的標頭,包括最終失敗原因的例外訊息和堆疊追蹤。另請參閱 frameMaxHeadroom 屬性。預設值:
true
- singleActiveConsumer
-
設定為 true 以將
x-single-active-consumer
佇列屬性設定為 true。預設值:
false
- transacted
-
是否使用交易式通道。
預設值:
false
。 - ttl
-
宣告時要套用至佇列的預設存活時間(以毫秒為單位)。
預設值:
no limit
- txSize
-
ack 之間的投遞次數。當
containerType
為direct
時,不支援。預設值:
1
。