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

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

It features:

  • A generator, that starts from a protobuf service definitions, for:
    • Model classes
    • The service API as a Scala traitJava interface using Akka Stream Sources
    • 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.

Project Information

Release notes are found at Github releases.

Project Status

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.