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.
This library is ready to be used in production, but API's and build system plugins are still expected to be improved and may change.
The API on both sides (Client and Server) is a simple Akka Streams-based one. We plan to also provide a 'power user' API for each of these (#191, #179).
The client side is currently implemented on top of io.grpc:grpc-netty-shaded, we plan to replace this by io.grpc:grpc-core and Akka HTTP.
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.
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:
Source
sThe project is split up in a number of subprojects:
io.gpc:grpc-interop-testing
, based on gRPC's original testset. These tests are duplicated as more faithful 'scripted' tests under the sbt-project module.Additionally, 'plugin-tester-java' and 'plugin-tester-scala' contain an example project in Java and Scala respectively, with both sbt and Gradle configurations.
If used with JDK 8 prior to version 1.8.0_251 you must add an ALPN agent.
Support for Akka gRPC is available via the Lightbend Subscription
Akka gRPC is Open Source and available under the Apache 2 License.