使用現有佇列/交換器

預設情況下,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'

autoBindDlqtrue 時,宣告死信交換器/佇列時,會使用類似的屬性。