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 如果交換機尚不存在,並且提供了 namequeue,則使用此路由鍵將佇列繫結到備用交換機。

預設值:#(用於預設的 topic 備用交換機)

alternateExchange.exists

備用交換機是否已存在,或者是否需要預置。

預設值:false

alternateExchange.type

如果備用交換機尚不存在,需要預置的交換機型別。

預設值:topic

alternateExchange.name

在目標交換機上配置一個備用交換機。

預設值:null

autoBindDlq

是否自動宣告死信佇列 (DLQ) 並將其繫結到繫結器死信交換機 (DLX)。

預設值:false

batchingEnabled

生產者是否啟用訊息批次處理。訊息根據以下屬性(在此列表的接下來的三個條目中描述):'batchSize'、batchBufferLimitbatchTimeout 批次處理到一個訊息中。更多資訊請參閱 Batching。另請參閱 接收批次訊息

預設值:false

batchSize

啟用批次處理時緩衝的訊息數量。

預設值:100

batchBufferLimit

啟用批次處理時的最大緩衝區大小。

預設值:10000

batchTimeout

啟用批次處理時的批次超時時間。

預設值:5000

bindingRoutingKey

用於將佇列繫結到交換機(如果 bindQueuetrue)的路由鍵。可以是多個鍵 - 參見 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)。僅當 autoBindDlqtrue 時相關。僅當提供了 requiredGroups 且僅對這些組應用。

預設值:'prefix+DLX'

deadLetterExchangeType

要分配給佇列的死信交換機 (DLX) 的型別。僅當 autoBindDlqtrue 時相關。僅當提供了 requiredGroups 且僅對這些組應用。

預設值:'direct'

deadLetterRoutingKey

要分配給佇列的死信路由鍵。僅當 autoBindDlqtrue 時相關。僅當提供了 requiredGroups 且僅對這些組應用。

預設值:destination

declareDlx

是否宣告目標的死信交換機 (DLX)。僅當 autoBindDlqtrue 時相關。如果您已預配置 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

如果 declareExchangetrue,交換機是否應自動刪除(在最後一個佇列被移除後被移除)。

預設值:true

exchangeDurable

如果 declareExchangetrue,交換機是否應持久化(在 Broker 重啟後仍然存在)。

預設值:true

exchangeType

交換機型別:對於非分割槽目的地是 directfanoutheaderstopic,對於分割槽目的地是 directheaderstopic

預設值: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 版本之前)。