Skip to content
/ akka-grpc Public

A platform to build and run apps that are elastic, agile, and resilient. SDK, libraries, and hosted environments.

License

Notifications You must be signed in to change notification settings

akka/akka-grpc

Folders and files

NameName
Last commit message
Last commit date
Sep 25, 2024
Jan 28, 2025
Oct 23, 2024
Jan 30, 2025
Feb 10, 2025
Jan 28, 2025
Jan 28, 2025
Oct 23, 2024
Jan 31, 2025
Jan 30, 2025
Jan 30, 2025
Feb 14, 2025
Feb 17, 2025
Feb 14, 2025
Feb 14, 2025
Oct 23, 2024
Sep 25, 2024
May 30, 2024
Apr 18, 2024
Nov 28, 2022
Sep 25, 2024
Oct 27, 2020
Nov 26, 2024
Jan 31, 2025
Sep 23, 2024
Nov 3, 2023
Jan 28, 2025

Repository files navigation

Akka gRPC

Support for building streaming gRPC servers and clients on top of Akka Streams.

This library is meant to be used as a building block in projects using the Akka toolkit.

The Akka family of projects is managed by teams at Lightbend with help from the community.

Documentation

Project Status

This library is ready to be used in production

The API on both sides (Client and Server) is a simple Akka Streams-based one.

The client side is currently implemented on top of io.grpc:grpc-netty-shaded with an Akka HTTP client backend alternative available.

As for performance, we are currently relying on the JVM TLS implementation, which is sufficient for many use cases, but is planned to be replaced with conscrypt or netty-tcnative.

General overview

gRPC is a schema-first RPC framework, where your protocol is declared in a protobuf definition, and requests and responses will be streamed over an HTTP/2 connection.

Based on a protobuf service definition, akka-grpc can generate:

  • Model classes (using plain protoc for Java or scalapb for Scala)
  • The API (as an interface for Java or a trait for Scala), expressed in Akka Streams Sources
  • On the server side, code to create an Akka HTTP route based on your implementation of the API
  • On the client side, a client for the API.

Project structure

The project is split up in a number of subprojects:

  • codegen: code generation shared among plugins
  • runtime: run-time utilities used by the generated code
  • sbt-plugin: the sbt plugin
  • scalapb-protoc-plugin: the scalapb Scala model code generation packaged as a protoc plugin, to be used from gradle
  • interop-tests

Additionally, 'plugin-tester-java' and 'plugin-tester-scala' contain an example project in Java and Scala respectively, with both sbt and Gradle configurations.

License

Akka gRPC is licensed under the Business Source License 1.1, please see the Akka License FAQ.

Tests and documentation are under a separate license, see the LICENSE file in each documentation and test root directory for details.