This feature allows addresses to be configured such that an alternate fallback destination can be used to receive messages that are not deliverable to any normal consumers on the address.
Typically, this feature will be used to allow a message broker to store messages that are not routable directly to consumers. When one or more consumers are attached in the router network, messages shall be delivered directly to the consumers. Where there are no reachable consumers, deliveries shall then be diverted to any fallback links that are attached. Once consumers re-connect to the network, messages shall again be delivered directly.
When a consumer comes online after messages have been stored in a broker, it shall receive the stored messages interleaved with new messages from producers. No attempt shall be made by the router network to preserve the original delivery order of the messages.
This feature can be configured by adding the attribute
to an address configuration. This attribute tells the router that any address matching the configuration shall support the fallback destination capability.
There are two ways to create a fallback link for an address:
An auto-link (or a pair of auto-links) can be configured to create a fallback link for an address. For example, assume that there is a route-container connector or listener for a broker called "alternate-broker".
The above configuration will use a queue on the broker called "position_update.338" as the fallback destination for direct consumers. Furthermore, since there are both in and out auto-links, the router(s) shall send queued messages to newly attached direct consumers.
Using terminus capabilities:
As an alternative to using auto-links, the broker (or any other process) can attach sending and receiving links to the address with terminus-capability "qd.fallback". This will create the same behavior as the above example.