This example demonstrates how Message-Streams
services from jauntsdn/RSocket-JVM
interoperate with each other over multiple transports (tcp, unix sockets, websockets/http2) & with GRPC, http/json over http2. It also demonstrates
how Message-Streams/RPC services may be decoupled from RSocket-JVM runtime (this includes transports, metrics, load estimators/circuit breakers).
Message-Streams
is very fast GRPC-like & GRPC-compatible services on JVM with rich streaming models.
Each service & its RPC client/server bindings have API of different nature: grpc-stub API(StreamObserver), CompletableFuture, or flavor of reactive: smallrye-mutiny, rxjava3, reactor-project.
Example application is comprised of 5 Message-Streams
services (RSocket-JVM runtimes are stripped on this branch),
plus GRPC & http/json clients:
-
Farmer service (Message-Streams-RPC-reactor + TCP transport)
-
Recipes service (Message-Streams-RPC-futures + TCP transport)
-
Roundsman service (Message-Streams-RPC-mutiny + WEBSOCKET-HTTP2 transport)
-
Chef service (Message-Streams-RPC-grpc + UNIX transport)
-
Kitchen service (Message-Streams-RPC-rxjava + GRPC transport)
-
Gourmet client (GRPC-java)
-
Supervisor client (http/json)
./gradlew
Regenerate RPC client/service stubs (linux, windows(x86) only)
./gradlew clean build -PgenerateProto=true