A library for writing services that focuses on composability and simplicity, with high performance using modern Java idioms and features.
Apollo is a set of Java libraries that we use at Spotify when writing micro-services. Apollo includes features such as an HTTP server and a URI routing system, making it trivial to implement RESTful services.
Apollo has been used in production at Spotify for a long time. As a part of the work to release version 1.0.0 we are moving the development of Apollo in to the open.
Apollo has three main parts:
The apollo-api library defines the interfaces for your request routing and request/reply handlers.
The apollo-core library manages the lifecycle (loading, starting, and stopping) of your service and defines a powerful module system for adding functionality to an Apollo assembly. You do not usually need to interact directly with apollo-core; think of it merely as “plumbing.”
Apollo HTTP Service
The apollo-http-service library is a standardized assembly of Apollo modules. It incorporates both apollo-api and apollo-core and ties them together with several other useful modules to get a standard api service using HTTP for incoming and outgoing communication.
Apollo is distributed as a set of Maven artifacts, which makes it easy to get started no matter the build tool; Maven, Ant + Ivy or Gradle. Below is a very simple but functional service — more extensive examples are available in the GitHub repository.
Find the JavaDocs here.