Introduction
Apache Qpid Dispatch Router has undergone a significant update in internal architecture as of release 0.6.0. The architectural change was necessary because the original architecture did not provide sufficient structure on which to implement some of the more advanced and desirable features. Version 0.6.0 contains the following highlights:
- End-to-End Flow Control - Message producers attached to the Router are now subject to flow control across the router network. If there are no available consumers for the sender's deliveries, the Router shall not issue credit.
- External Containers for terminating link-routes and for hosting waypoints (i.e. Brokers hosting queues and topics, etc.) can now be reached by listeners as well as connectors and can be identified either by the listener/connector or by the AMQP container-id of the attached process.
- Improved Link-Route Configuration - Link routes can now be controlled independently for receiving and sending links. They can also be configured with a connector/listener/container-id that does not yet exist (i.e. no ordering constraints on configuring link-routes and their related containers).
- AutoLinks replace Waypoints - The Waypoint feature has been redesigned with simpler configuration and improved behavior. This feature is now controlled using the newly introduced autoLink feature. AutoLinks are manageable links whose lifecycle is controlled by the router as opposed to most other links whose lifecycles are controlled by the connected devices.
- Dynamic Control of connectors, listeners, linkRoutes, and autoLinks is now fully supported. The Router can be provisioned dynamically using the AMQP management protocol and available tools.
- Forwarding Semantics Simplified - The old fanout and bias configuration for fixedAddress has been replaced by a single configuration for distribution. Distribution values are:
- Multicast - Each messages delivered once to each attached subscriber for an address.
- Closest - Each message is delivered to only the closest attached subscriber. This provides location affinity (i.e. use the service in my region if available).
- Balanced - Messages are delivered to the attached subscriber with the fewest outstanding/unsettled deliveries. This mechanism favors faster consumers over slower ones and will work well in situations where message-processing time is highly variable.
- Access Control - A new access control and resource usage limiting feature has been introduced in this version.
- x.509 Identity - Improved flexibility in identifying users via x.509 certificates is provided. This identity can then be used to index into the access control policies.
- AMQP Heartbeats are now configurable in listeners and connectors.
- Protocol Family is now accessible in listeners and connectors to provide better control over the use of IPv4 and IPv6.
- Many Bugs Fixed
Backward Compatibility
Configuration files from earlier versions can be used in 0.6.0 with the following exceptions:
- fixedAddress for address "/" is no longer supported. The default distribution is "balanced".
- fixedAddress entries for which there are phases are no longer supported. This has been replaced by the boolean waypoint attribute in the address entity.
- waypoint entries are no longer supported. This has been replaced by autoLink.
- Address prefixes: Addresses may be identified by prefix in address and linkRoute. The prefix now has a delimiter of '.' (period).