• Stars
    star
    431
  • Rank 100,866 (Top 2 %)
  • Language
    Scala
  • License
    Other
  • Created almost 7 years ago
  • Updated 29 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Akka gRPC

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.

More Repositories

1

akka

Build highly concurrent, distributed, and resilient message-driven applications on the JVM
Scala
13,049
star
2

alpakka-kafka

Alpakka Kafka connector - Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka.
Scala
1,417
star
3

akka-http

The Streaming-first HTTP server/module of Akka
Scala
1,337
star
4

alpakka

Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka.
Scala
1,263
star
5

akka-samples

Akka Sample Projects
Scala
789
star
6

akka-persistence-cassandra

A replicated Akka Persistence journal backed by Apache Cassandra
Scala
329
star
7

akka-persistence-jdbc

Asynchronously writes journal and snapshot entries to configured JDBC databases so that Akka Actors can recover state
Scala
308
star
8

akka-management

Akka Management is a suite of tools for operating Akka Clusters.
Scala
255
star
9

akka-meta

This repository is dedicated to high-level feature discussions and for persisting design decisions.
201
star
10

akka-stream-contrib

Add-ons to Akka Stream
Scala
172
star
11

akka-http-quickstart-scala.g8

Scala
125
star
12

akka-projection

Akka Projections is intended for building systems with the CQRS pattern, and facilitate in event-based service-to-service communication.
Scala
102
star
13

akka-persistence-dynamodb-1.x

DynamoDBJournal for Akka Persistence
Scala
85
star
14

alpakka-samples

Example projects building Reactive Integrations using Alpakka
Java
67
star
15

akka-modules

Akka Modules Repository
Scala
67
star
16

akka-guide

Examples how to implement Microservices using Akka
Java
60
star
17

akka-quickstart-scala.g8

A minimal seed template for an Akka with Scala build
Scala
57
star
18

akka-sample-cluster-kubernetes-scala

Example showing how to create an Akka Cluster on Kubernetes.
Scala
45
star
19

akka.io

The akka.io site
SCSS
43
star
20

akka-sample-cluster-kubernetes-java

Shell
29
star
21

akka-sample-cluster-docker-compose-scala

Scala
26
star
22

akka-grpc-sample-kubernetes-scala

Scala
25
star
23

akka-persistence-r2dbc

Scala
24
star
24

apps

Scala
23
star
25

akka-quickstart-java.g8

A minimal seed template for an Akka in Java
Java
20
star
26

akka-grpc-quickstart-scala.g8

A minimal seed template for an Akka gRPC with Scala build
Scala
20
star
27

akka-http-quickstart-java.g8

Java
18
star
28

akka-distributed-workers-scala.g8

Scala
17
star
29

akka-persistence-spanner

Spanner plugin for Akka Persistence
Scala
13
star
30

akka-sample-cluster-docker-compose-java

Java
9
star
31

akka-http-webgoat

Scala
9
star
32

akka-edge-rs

Akka Edge support in Rust
Rust
9
star
33

akka-minion

Akka CI and Github minion
Scala
8
star
34

akka-sample-cluster-kubernetes-dns-java

Java
8
star
35

akka-kubernetes-tests

Basic tests that show Akka Cluster and friends work on Kubernetes
Scala
7
star
36

akka-paradox

Akka Paradox theme and extensions
CSS
7
star
37

akka-grpc-quickstart-java.g8

Akka gRPC Quickstart for Java
Java
6
star
38

akka-microservices-seed-scala.g8

Akka Microservices Giter8 template
Scala
5
star
39

doc.akka.io

Backup of documentation
5
star
40

akka-dependencies

Maven "bill of materials" (BOM) for Akka releases
Scala
4
star
41

akka-diagnostics

Build highly concurrent, distributed, and resilient message-driven applications on the JVM
Scala
4
star
42

old-blog

Akka Team Blog
CSS
3
star
43

akka-persistence-dynamodb

DynamoDB plugin for Akka Persistence
Scala
2
star
44

akka-upgrade-testing

Test rolling upgrades for Akka remote/cluster
Scala
2
star
45

akka-projection-testing

End-to-end testing of Projections
Scala
1
star
46

assembla-migration

Perl
1
star
47

.github

Akka's organisation-wide files
1
star