Provides for straightforward add-ons to existing code to make it more
robust and easier to manage. Although there are several lower-level
building block classes here available for custom solutions, most clients
will find they can use just the following classes:
- {@link org.fishwife.jrugged.CircuitBreaker} provides a way to wrap a service in a way that
provides a bulkhead against system failure; when a remote service fails,
further calls to the service are prevented for a period of time to allow
the remote service to recover.
- {@link org.fishwife.jrugged.Initializer} provides a way to decouple service construction from
initialization/startup and allows the latter to occur in the background, even
retrying if initial attempts to initialize fail.
- {@link org.fishwife.jrugged.PerformanceMonitor} provides a way to wrap a service and collect
a series of useful statistics about its latency and throughput, even
calculating moving averages across different time windows.
- {@link org.fishwife.jrugged.Monitorable}, {@link org.fishwife.jrugged.Status}, and {@link org.fishwife.jrugged.RolledUpStatus} are
related classes that provide a simple RED/YELLOW/GREEN encoding for service
health, possibly useful for constructing operational dashboards.
Generally speaking, most of these classes implement a {@link org.fishwife.jrugged.ServiceWrapper}
interface to allow them to be applied around existing services using the
Decorator
design pattern. Those classes providing operational information, such
as {@link org.fishwife.jrugged.PerformanceMonitor} and {@link org.fishwife.jrugged.Monitorable} can be wrapped in
classes that expose their data to JMX controls or on web-accessible health
status pages as desired.
Related Documentation
For overviews, tutorials, examples, guides, and tool documentation, please see: