gRPC is a transport mechanism for request/response and (non-persistent) streaming use cases. See Why gRPC? for more information about when to use gRPC as your transport.
Akka gRPC provides support for building streaming gRPC servers and clients on top of Akka Streams.
- A generator, that starts from a protobuf service definitions, for:
- Model classes
- The service API as a Scala traitJava interface using Akka Stream
- On the server side, code to create an Akka HTTP route based on your implementation of the service
- On the client side side, a client for the service
- gRPC Runtime implementation that uses Akka HTTP/2 support for the server side and grpc-netty-shaded for the client side.
- Support for sbt, gradle, and Maven, and the Play Framework.
Release notes are found at Github releases.
This library is in preview mode: basic functionality is in place, but APIs and build plugins are still expected to be improved.
The API on both sides (Client and Server) is a simple Akka Streams-based one. The client has a ‘power user’ API, which is also planned for the server (see #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.
Found an error in this documentation? The source code for this page can be found here
Please feel free to edit and contribute a pull request.