GH-2453: RMQ: Full Support for Alternate Exchange

Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2453

Previously, to configure the use of an alternative exchange (used to route
messages when no queue is bound), the user had to manually declare the
exchange and any bindings, and modify the destination exchange using a
`DeclarablesCustomizer` bean.

Add first class support to configure the destination exchange and, optionally,
provision the alternate exchange as well as optionally binding a specific
queue to it.

Resolves #2502
This commit is contained in:
Gary Russell
2022-08-31 13:17:29 -04:00
committed by Oleg Zhurakousky
parent 9a18600413
commit 4fda96507c
7 changed files with 310 additions and 15 deletions

View File

@@ -682,7 +682,27 @@ in the format of `spring.cloud.stream.rabbit.default.<property>=<value>`.
Also, keep in mind that binding specific property will override its equivalent in the default.
altermateExchange.binding.queue::
If the exchange does not already exist, and a `name` is provided, bind this queue to the alternate exhange.
A simple durable queue with no arguments is provisioned; if more sophisticated configuration is required, you must configure and bind the queue yourself.
+
Default: `null`
alternateExchange.binding.routingKey
If the exchange does not already exist, and a `name` and `queue` is provided, bind the queue to the alternate exhange using this routing key.
+
Default: `#` (for the default `topic` alternate exchange)
alternateExchange.exists::
Whether the alternate exchange exists, or needs to be provisioned.
+
Default: `false`
alternateExchange.type::
If the alternate exchange does not already exist, the type of exchange to provision.
+
Default: `topic`
alternateExchange.name::
Configure an alternate exchange on the destination exchange.
+
Default: `null`
autoBindDlq::
Whether to automatically declare the DLQ and bind it to the binder DLX.
+