GH-239: Doc how to use existing queue/exchange
Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-rabbit/issues/239
This commit is contained in:
committed by
Oleg Zhurakousky
parent
aad009ef71
commit
933024c179
@@ -565,6 +565,35 @@ Default: `no limit`
|
||||
NOTE: In the case of RabbitMQ, content type headers can be set by external applications.
|
||||
Spring Cloud Stream supports them as part of an extended internal protocol used for any type of transport -- including transports, such as Kafka (prior to 0.11), that do not natively support headers.
|
||||
|
||||
== Using Existing Queues/Exchanges
|
||||
|
||||
By default, the binder will automatically provision a topic exchange with the name being derived from the value of the destination binding property `<prefix><destination>`.
|
||||
The destination defaults to the binding name, if not provided.
|
||||
When binding a consumer, a queue will automatically be provisioned with the name `<prefix><destination>.<group>` (if a `group` binding property is specified), or an anonymous, auto-delete queue when there is no `group`.
|
||||
The queue will be bound to the exchange with the "match-all" wildcard routing key (`#`) for a non-partitioned binding or `<destination>-<instanceIndex>` for a partitioned binding.
|
||||
The prefix is an empty `String` by default.
|
||||
If an output binding is specified with `requiredGroups`, a queue/binding will be provisioned for each group.
|
||||
|
||||
There are a number of rabbit-specific binding properties that allow you to modify this default behavior.
|
||||
|
||||
If you have an existing exchange/queue that you wish to use, you can completely disable automatic provisioning as follows, assuming the exchange is named `myExchange` and the queue is named `myQueue`:
|
||||
|
||||
* `spring.cloud.stream.binding.<binding name>.destination=myExhange`
|
||||
* `spring.cloud.stream.binding.<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`
|
||||
|
||||
If you want the binder to provision the queue/exchange, but you want to do it using something other than the defaults discussed here, use the following properties.
|
||||
Refer to the property documentation above for more information.
|
||||
|
||||
* `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'`
|
||||
|
||||
There are similar properties used when declaring a dead-letter exchange/queue, when `autoBindDlq` is `true`.
|
||||
|
||||
== Retry With the RabbitMQ Binder
|
||||
|
||||
When retry is enabled within the binder, the listener container thread is suspended for any back off periods that are configured.
|
||||
|
||||
Reference in New Issue
Block a user