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) 並將其繫結到繫結器死信交換機 (DLX)。
預設值:
false
。 - batchingEnabled
-
生產者是否啟用訊息批次處理。訊息根據以下屬性(在此列表的接下來的三個條目中描述):'batchSize'、
batchBufferLimit
和batchTimeout
批次處理到一個訊息中。更多資訊請參閱 Batching。另請參閱 接收批次訊息。預設值:
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
-
是否宣告目標的死信交換機 (DLX)。僅當
autoBindDlq
為true
時相關。如果您已預配置 DLX,請設定為false
。僅在提供了requiredGroups
且僅對這些組應用。預設值:
true
。 - declareExchange
-
是否宣告目標交換機。
預設值:
true
。 - delayExpression
-
一個 SpEL 表示式,用於評估要應用於訊息(
x-delay
頭部)的延遲時間。如果交換機不是延遲訊息交換機,則此設定無效。預設值:不設定
x-delay
頭部。 - delayedExchange
-
是否將交換機宣告為
Delayed Message Exchange
。需要在 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 外掛客戶端,阻塞直到收到確認 -
STREAM_ASYNC
RabbitMQ Streams 外掛客戶端,不阻塞預設值:""。
-
- 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 版本之前)。