使用現有佇列/交換機

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

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