JVM libraries for building Apollo Federation subgraphs with graphql-java and Spring GraphQL.
Apollo Federation JVM is a set of libraries that provide Apollo Federation support for the JVM ecosystem, specifically for graphql-java and Spring GraphQL. It enables developers to build federated GraphQL subgraphs that can be combined into a unified supergraph, solving the problem of scaling GraphQL APIs across multiple services.
Java and Kotlin developers building GraphQL microservices who want to implement Apollo Federation architecture using graphql-java or Spring GraphQL frameworks.
Developers choose this library because it offers official JVM support for Apollo Federation with seamless integration into existing graphql-java projects, provides Federation-aware instrumentations, and extends Spring GraphQL with subscription callback protocol support not available out-of-the-box.
JVM support for Apollo Federation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The SchemaTransformer automatically adds Federation type definitions and directives like _Any scalar and _Entity union, making schemas compatible without manual adjustments, as detailed in the graphql-java-support module README.
Includes CacheControlInstrumentation for operation-level cache management based on @cacheControl directives and FederatedTracingInstrumentation for generating trace data in federated operations, enhancing observability out-of-the-box.
Adds subscription support via Apollo's HTTP callback protocol for Spring GraphQL, complementing existing WebSocket support, which is useful for specific deployment scenarios like those using Apollo Router.
As an official Apollo project, it ensures compatibility with Apollo Federation standards and regular updates, reducing integration risks and providing community support through Apollo forums.
Tightly couples your subgraphs to Apollo's federation protocols and tools, making it difficult to switch to other GraphQL gateway solutions without significant rework, limiting flexibility in heterogeneous environments.
Requires setting up entity resolvers and instrumentations separately, adding complexity compared to non-federated GraphQL implementations, as indicated by the need to use SchemaTransformer and module-specific setups.
Key details are spread across external Apollo documentation and module READMEs, forcing developers to navigate multiple sources, which can slow down onboarding and troubleshooting.