A utility for creating services that relay data from an arbitrary supplier to an HTTP endpoint. Messages are sent asynchronously with configurable concurrency. Any failed messages are retried with exponential back-off, up to a configurable limit. All components are instrumented and reporting to Graphite, CloudWatch, Essem, or New Relic is supported out-of-the box.
A service is built by configuring a component chain: Supplier -> Transformer -> Relay -> HTTP Endpoint. You provide the Supplier, an optional Transformer and the HTTP endpoint configuration. Relay executes the chain until shutdown or the Supplier is complete, retrying failed messages if necessary. Along the way, state may be saved to allow the service to start up where it left off after shutdown.