Archaius includes a set of java configuration management APIs used at Netflix. It is primarily implemented as an extension of Apache's Commons Configuration Library. Notable features are:
- Dynamic, Typed Properties
- High throughput and Thread Safe Configuration operations
- A polling framework that allows users to obtain property changes to a Configuration Source
- A Callback mechanism that gets invoked on effective/“winning” property mutations (in the ordered hierarchy of Configurations)
- A JMX MBean that can be accessed via JConsole to inspect and invoke operations on properties
- Out of the box, Composite Configurations (with ordered hierarchy) for applications (and most web applications) willing to use convention based property file locations
A more detailed description of the features can be found at Archaius Features
- Sample Composite Configuration
At the heart of Archaius is the concept of a Composite Configuration which can hold one or more Configurations. Each Configuration can be sourced from a Configuration Source such as: JDBC, REST, .properties file etc. Configuration Sources can optionally be polled at runtime for changes (In the above diagram, the Persisted DB Configuration Source; an RDBMS containing properties in a table, is polled every so often for changes).
The final value of a property is determined based on the top most Configuration that contains that property. i.e. If a property is present in multiple configurations, the actual value seen by the application will be the value that is present in the topmost slot in the hierarchy of Configurations. The hierarchy can be configured.