A suite of libraries for using gRPC with Reactive Streams programming models like RxJava and Spring Reactor.
Reactive gRPC is a suite of libraries that provides reactive programming bindings for gRPC, enabling developers to use Reactive Streams libraries like RxJava and Spring Reactor with gRPC services. It solves the problem of integrating gRPC's HTTP/2-based communication with reactive programming models by offering generated stubs that support back-pressure and streaming operations.
Java developers building microservices or distributed systems with gRPC who want to adopt reactive programming patterns using RxJava or Spring Reactor.
Developers choose Reactive gRPC because it seamlessly integrates gRPC with popular reactive libraries, providing end-to-end back-pressure support and bidirectional streaming capabilities that align with Reactive Streams standards.
Reactive stubs for gRPC
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Generates gRPC stubs for RxJava 2, RxJava 3, and Spring Reactor via a protobuf compiler plugin, simplifying integration with reactive programming libraries.
Integrates gRPC's HTTP/2 flow control with Reactive Streams, enabling consistent back-pressure across distributed systems for unary and streaming operations.
Supports streaming in both directions, aligning with reactive programming patterns for complex data flows between client and server.
Manages exception propagation with gRPC status exceptions, ensuring errors are communicated between client and server, though with some quirks.
The project is effectively paused and seeking new maintainers, risking long-term stability, updates, and support for production systems.
Back-pressure involves three interacting layers (HTTP/2, gRPC, Reactive Streams), making behavior unintuitive and less predictable, as admitted in the documentation.
Spring Reactor bindings are not officially supported on Android, and support is conditional on SDK version 26+, limiting use in mobile development.