使用现有队列/交换机
默认情况下,binder 会自动配置一个名为 <prefix><destination>
的主题交换机,该名称源自 destination 绑定属性的值。如果未提供,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
时,在声明死信交换机/队列时会使用类似的属性。