RabbitMQ 生產者屬性
以下屬性僅適用於 Rabbit 生產者,且必須以 spring.cloud.stream.rabbit.bindings.<channelName>.producer.
為前綴。
但是,如果同一組屬性需要應用於大多數繫結,為了避免重複,Spring Cloud Stream 支援為所有通道設定值,格式為 spring.cloud.stream.rabbit.default.<property>=<value>
。
此外,請記住,繫結特定屬性將覆蓋其在預設值中的等效項。
- altermateExchange.binding.queue
-
如果交換器尚不存在,且提供了
name
,則將此佇列繫結至替代交換器。將配置一個簡單的持久佇列,不帶任何引數;如果需要更複雜的組態,您必須自行配置並繫結佇列。預設值:
null
alternateExchange.binding.routingKey 如果交換器尚不存在,且提供了name
和queue
,則使用此路由金鑰將佇列繫結至替代交換器。預設值:
#
(對於預設的topic
替代交換器) - alternateExchange.exists
-
替代交換器是否存在,或是否需要佈建。
預設值:
false
- alternateExchange.type
-
如果替代交換器尚不存在,則要佈建的交換器類型。
預設值:
topic
- alternateExchange.name
-
在目的地交換器上配置替代交換器。
預設值:
null
- autoBindDlq
-
是否自動宣告 DLQ 並將其繫結至 binder DLX。
預設值:
false
。 - batchingEnabled
-
是否啟用生產者的訊息批次處理。訊息會根據以下屬性(在本列表中的接下來三個條目中描述)批次處理成一個訊息:'batchSize'、
batchBufferLimit
和batchTimeout
。有關更多資訊,請參閱 批次處理。另請參閱 接收批次訊息。預設值:
false
。 - batchSize
-
啟用批次處理時要緩衝的訊息數量。
預設值:
100
。 - batchBufferLimit
-
啟用批次處理時的最大緩衝區大小。
預設值:
10000
。 - batchTimeout
-
啟用批次處理時的批次逾時。
預設值:
5000
。 - bindingRoutingKey
-
用於將佇列繫結至交換器的路由金鑰(如果
bindQueue
為true
)。可以是多個金鑰 - 請參閱bindingRoutingKeyDelimiter
。對於分割的目的地,-n
會附加到每個金鑰。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
#
。 - bindingRoutingKeyDelimiter
-
當此值不為 null 時,'bindingRoutingKey' 會被視為以該值分隔的金鑰列表;通常使用逗號。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
null
。 - bindQueue
-
是否宣告佇列並將其繫結至目的地交換器。如果您已設定自己的基礎設施,且先前已建立並繫結佇列,則將其設定為
false
。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
true
。 - compress
-
傳送時是否應壓縮資料。
預設值:
false
。 - confirmAckChannel
-
當
errorChannelEnabled
為 true 時,用於傳送正面傳遞確認(又稱發布者確認)的通道。如果通道不存在,則會使用此名稱註冊DirectChannel
。連線工廠必須配置為啟用發布者確認。與useConfirmHeader
互斥。預設值:
nullChannel
(確認會被捨棄)。 - deadLetterQueueName
-
DLQ 的名稱。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
prefix+destination.dlq
- deadLetterExchange
-
要指派給佇列的 DLX。僅當
autoBindDlq
為true
時相關。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:'prefix+DLX'
- deadLetterExchangeType
-
要指派給佇列的 DLX 類型。僅當
autoBindDlq
為true
時相關。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:'direct'
- deadLetterRoutingKey
-
要指派給佇列的死信路由金鑰。僅當
autoBindDlq
為true
時相關。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
destination
- declareDlx
-
是否為目的地宣告死信交換器。僅當
autoBindDlq
為true
時相關。如果您有預先配置的 DLX,則設定為false
。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
true
。 - declareExchange
-
是否為目的地宣告交換器。
預設值:
true
。 - delayExpression
-
用於評估要應用於訊息的延遲(
x-delay
標頭)的 SpEL 表達式。如果交換器不是延遲訊息交換器,則無效。預設值:未設定
x-delay
標頭。 - delayedExchange
-
是否將交換器宣告為
延遲訊息交換器
。需要在 Broker 上安裝延遲訊息交換器外掛程式。x-delayed-type
引數設定為exchangeType
。預設值:
false
。 - deliveryMode
-
傳遞模式。
預設值:
PERSISTENT
。 - dlqBindingArguments
-
將 dlq 繫結至死信交換器時套用的引數;與
headers
deadLetterExchangeType
搭配使用,以指定要比對的標頭。例如…dlqBindingArguments.x-match=any
、…dlqBindingArguments.someHeader=someValue
。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:空白
- dlqDeadLetterExchange
-
當宣告 DLQ 時,要指派給該佇列的 DLX。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
none
- dlqDeadLetterRoutingKey
-
當宣告 DLQ 時,要指派給該佇列的死信路由金鑰。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
none
- dlqExpires
-
未使用過的死信佇列在刪除前可存活多久(以毫秒為單位)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no expiration
- dlqLazy
-
使用
x-queue-mode=lazy
引數宣告死信佇列。請參閱 “Lazy Queues”。考慮使用策略而不是此設定,因為使用策略允許在不刪除佇列的情況下變更設定。僅在提供了requiredGroups
時適用,且僅適用於這些群組。 - dlqMaxLength
-
死信佇列中的最大訊息數。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- dlqMaxLengthBytes
-
來自所有訊息的死信佇列中的最大總位元組數。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- dlqMaxPriority
-
死信佇列中訊息的最大優先順序 (0-255)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
none
- dlqQuorum.deliveryLimit
-
當
quorum.enabled=true
時,設定傳遞限制,超過此限制後,訊息將被捨棄或成為死信。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:無 - 將套用 Broker 預設值。
- dlqQuorum.enabled
-
為 true 時,建立仲裁死信佇列而不是傳統佇列。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:false
- dlqQuorum.initialGroupSize
-
當
quorum.enabled=true
時,設定初始仲裁大小。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:無 - 將套用 Broker 預設值。
- dlqSingleActiveConsumer
-
設定為 true 以將
x-single-active-consumer
佇列屬性設定為 true。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
false
- dlqTtl
-
宣告時要套用於死信佇列的預設存活時間(以毫秒為單位)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- exchangeAutoDelete
-
如果
declareExchange
為true
,則交換器是否應為自動刪除(在移除最後一個佇列後將會移除)。預設值:
true
。 - exchangeDurable
-
如果
declareExchange
為true
,則交換器是否應為持久(在 Broker 重新啟動後仍存在)。預設值:
true
。 - exchangeType
-
交換器類型:非分割目的地的
direct
、fanout
、headers
或topic
,以及分割目的地的direct
、headers
或topic
。預設值:
topic
。 - expires
-
未使用過的佇列在刪除前可存活多久(以毫秒為單位)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no expiration
- headerPatterns
-
要對應至輸出訊息的標頭模式。
預設值:
['*']
(所有標頭)。 - lazy
-
使用
x-queue-mode=lazy
引數宣告佇列。請參閱 “Lazy Queues”。考慮使用策略而不是此設定,因為使用策略允許在不刪除佇列的情況下變更設定。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
false
。 - maxLength
-
佇列中的最大訊息數。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- maxLengthBytes
-
來自所有訊息的佇列中的最大總位元組數。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- maxPriority
-
佇列中訊息的最大優先順序 (0-255)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
none
- prefix
-
要新增至
destination
交換器名稱的前綴。預設值:""。
- producerType
-
生產者類型。
-
AMQP
用於傳統和仲裁佇列的 AMQP 用戶端 -
STREAM_SYNC
RabbitMQ Streams Plugin 用戶端,會封鎖直到收到確認 -
STREAM_ASYNC
RabbitMQ Streams Plugin 用戶端,不會封鎖預設值:""。
-
- queueBindingArguments
-
將佇列繫結至交換器時套用的引數;與
headers
exchangeType
搭配使用,以指定要比對的標頭。例如…queueBindingArguments.x-match=any
、…queueBindingArguments.someHeader=someValue
。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:空白
- queueNameGroupOnly
-
為
true
時,從名稱等於group
的佇列消費。否則,佇列名稱為destination.group
。例如,當使用 Spring Cloud Stream 從現有的 RabbitMQ 佇列消費時,這很有用。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:false。
- quorum.deliveryLimit
-
當
quorum.enabled=true
時,設定傳遞限制,超過此限制後,訊息將被捨棄或成為死信。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:無 - 將套用 Broker 預設值。
- quorum.enabled
-
為 true 時,建立仲裁佇列而不是傳統佇列。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:false
- quorum.initialGroupSize
-
當
quorum.enabled=true
時,設定初始仲裁大小。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:無 - 將套用 Broker 預設值。
- routingKeyExpression
-
用於決定發布訊息時要使用的路由金鑰的 SpEL 表達式。對於固定的路由金鑰,請使用
routingKey
。預設值:分割目的地的
destination
或destination-<partition>
。 - routingKey
-
定義發布訊息時要使用的固定路由金鑰的字串。
預設值:請參閱
routingKeyExpression
- singleActiveConsumer
-
設定為 true 以將
x-single-active-consumer
佇列屬性設定為 true。僅在提供了requiredGroups
時適用,且僅適用於這些群組。預設值:
false
- transacted
-
是否使用交易式通道。
預設值:
false
。 - ttl
-
宣告時要套用於佇列的預設存活時間(以毫秒為單位)。僅在提供了
requiredGroups
時適用,且僅適用於這些群組。預設值:
no limit
- useConfirmHeader
-
請參閱 發布者確認。與
confirmAckChannel
互斥。在 RabbitMQ 的情況下,內容類型標頭可以由外部應用程式設定。Spring Cloud Stream 支援它們,作為用於任何類型傳輸的擴展內部協定的一部分 — 包括 Kafka(0.11 之前的版本)等本機不支援標頭的傳輸。