使用現有佇列/交換器
預設情況下,binder 將自動佈建一個主題交換器,其名稱源自於目的地繫結屬性 <prefix><destination>
的值。如果未提供目的地,則預設為繫結名稱。當繫結消費者時,將自動佈建一個佇列,其名稱為 <prefix><destination>.<group>
(如果指定了 group
繫結屬性),或者在沒有 group
時,則為匿名、自動刪除的佇列。對於非分割區繫結,佇列將以「全部匹配」萬用字元路由金鑰 (#
) 繫結到交換器,對於分割區繫結,則以 <destination>-<instanceIndex>
繫結。預設情況下,前綴為空 String
。如果輸出繫結指定了 requiredGroups
,則將為每個群組佈建一個佇列/繫結。
有許多 Rabbit 特定的繫結屬性可讓您修改此預設行為。
如果您有現有的交換器/佇列想要使用,您可以完全停用自動佈建,如下所示,假設交換器名為 myExchange
,佇列名為 myQueue
-
spring.cloud.stream.bindings.<binding name>.destination=myExchange
-
spring.cloud.stream.bindings.<binding name>.group=myQueue
-
spring.cloud.stream.rabbit.bindings.<binding name>.consumer.bindQueue=false
-
spring.cloud.stream.rabbit.bindings.<binding name>.consumer.declareExchange=false
-
spring.cloud.stream.rabbit.bindings.<binding name>.consumer.queueNameGroupOnly=true
如果您希望 binder 佈建佇列/交換器,但您希望使用與此處討論的預設值不同的方式執行,請使用以下屬性。請參閱上面的屬性文件以取得更多資訊。
-
spring.cloud.stream.rabbit.bindings.<binding name>.consumer.bindingRoutingKey=myRoutingKey
-
spring.cloud.stream.rabbit.bindings.<binding name>.consumer.exchangeType=<type>
-
spring.cloud.stream.rabbit.bindings.<binding name>.producer.routingKeyExpression='myRoutingKey'
當 autoBindDlq
為 true
時,宣告死信交換器/佇列時,會使用類似的屬性。