Java Broker Unified ConfigurationPage edited by keith wallChanges (1)
Full ContentThe Java broker currently has a mixed model for storage of configuration, where some things are held in (multiple) XML files, others are held in a VirtualHosts durable (message) storage, and some can even be held in both. This can create challenges in determining which configuration source should be used to retrieve particular information, and reconciling which configuration source should dominate in the event that overlaps occur. The following page is intended to document analysis and design aspects of efforts to unify the configuration model of the Java broker and provide it a single consistent storage model for configuration, held in a (durable) configuration store. This is core to an overall effort to improve usability of the product and increase its suitability for use in Cloud environments. Components of this work include removal of the XML based configuration, addition of a new configuration model for broker entities, consistent storage of that model information, and new management functionality enabling a self-service style operation of remote broker instances via means such as browser based management and a REST API in addition to improved JMX support. Configuration EntitiesRelationships
A particular Port may support one or more Protocols from those supported by the Broker. A Port may support multiple Transports, for example to allow SSL and non-SSL connections. A VrtualHostAlias will serve as wiring between a Port and a VirtualHost. Clients will connect to a particular VirtualHostAlias, which will be linked with a particular VirtualHost instance. VirtualHosts may have multiple Aliases. When connecting via a particular VirtualHostAlias clients must use one of its supported AuthenticationMethods. An AuthenticationMethod is essentially a supported SASL mechnism which forms a relationship between a VirtualHostAlias and a particular AuthenticationProvider, effectively indicating that a particular SASL mechanism can be used when connecting to a given VirtualHost. When a client connects to a particular Port on the Broker, the union of available Method->Providers for the VirtualHostAliases bound to the Port is returned to the client, which after authenticating will indicate the specific VirtualHostAlias it wishes to connect and a final validation will be peformed to ensure the mechanism used was supported by the target. There is a restriction that on a given Port that supports a 0-X AMQP version that only one AuthenticationProvider can be associated with any given AuthenticationMethod name.
Class Diagram
Other entities or other subsystems will be Listeners for state/attribute/child events. This will be useful for Management implementations and Store implementation allowing them to react to changes in the configuration and adjust themselves accordingly.
AttributesConfiguredObjects have attributes. These are mappings between names and objects. These attributes are used by Real Objects to govern behaviour. For instance a VirtualHost may have an attribute store-location to specify the location of its data-store. A queue might have an attribute max-queue-depth which limits the depth of a queue. When a real object looks up a attribute, if the attribute does not exist at the level of its ConfiguredObject, it will automatically search the ConfiguredObject's parent for a value and so forth until the search reaches the Broker's Configured Object. Continuing with the queue depth example, if the Queue's Configured Object does not have a max-queue-depth, the system will automatically try the Virtual Host for a max-queue-depth. If the Virtual Host has no value, it will finally try the Broker. Each ConfiguredObject will understand a list of well-known attribute names. These will be usable in all places (management interfaces, AMQP connections) as argument keys for specifying attribute values when creating ConfiguredObjects. There may also be aliases for these, for example to support legacy arguments used by existing tools/clients, (e.g. x-qpid-maximum-message-count) for certain attributes. When performing AMQP (0-10) queries on queues, all of the attributes (and any associated aliases, to allow for transition) of the Queue will be returned. VariablesConfiguredObjects also have variables. These are mappings between names and string values. A typical use-case would be set a variable for a file system root (for a store location or logging directory) but could be used for other purposes. Variables are provided for operational flexibility to help a user move their configuration between environments by factoring out environment-specific values. Attribute values which are strings will automatically interpolate variables into their values by substituting placeholders. Real objects won't uses variables directly (that is they will never call ConfiguredObject#getVariable), but will always configure themselves with attributes. Like attributes if a variable has no value, the system will automatically search the ancestors of the Configured Object for a variable assignment. Example, a user may define variable the following variable at Broker level: STORE_HOME=/local/prodstore/ and configure their virtual host with attribute
Representing configured objects in the storeAll configured objects will have the following logical representation in the store:
Attributes will be a map of key value pairs which can be entity-dependent but will always include:
Time To Live for configured objects represents how long an object will live once the conditions of its Lifetime Policy are no longer satisfied (e.g. a queue with an auto-delete policy could be deleted a certain amount of time after consumer/session closes rather than immediately, or an otherwise permanent queue could be deleted after being idle for a configured period of time).
Change Notification Preferences
View Online
|
View Changes
|
Add Comment
|
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence
- [CONF] Apache Qpid > Java Broker Unified Configuration confluence