使用現有佇列/交換機
預設情況下,Binder 會自動建立一個主題交換機,其名稱派生自目的地繫結屬性 <prefix><destination>
的值。如果未提供目的地,則預設為繫結名稱。繫結消費者時,如果指定了 group
繫結屬性,則會自動建立一個名為 <prefix><destination>.<group>
的佇列;如果沒有 group
,則建立一個匿名、自動刪除的佇列。對於非分割槽繫結,該佇列將繫結到交換機,使用“匹配所有”萬用字元路由鍵 (#
);對於分割槽繫結,則使用 <destination>-<instanceIndex>
。預設情況下,字首為空 String
。如果輸出繫結指定了 requiredGroups
,則會為每個組建立一個佇列/繫結。
有一些 RabbitMQ 特有的繫結屬性可以修改此預設行為。
如果您希望使用已有的交換機/佇列,可以完全停用自動建立,如下所示,假設交換機名為 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
時,宣告死信交換機/佇列也會使用類似的屬性。