gRPC Examples
The grpc
folder contains examples for
the gRPC application protocol. We provide
implementations for the examples proto services provided by
gRPC.
Hello World
Implementation for the gRPC hello world example.
Asynchronous
This example demonstrates asynchronous request processing for the hello world API using the HelloWorldServer and a HelloWorldClient
Blocking
This example demonstrates blocking request processing for the hello world API using the BlockingHelloWorldServer and a BlockingHelloWorldClient
Route guide
Implementation for the gRPC route guide example.
Asynchronous
Asynchronous processing for different APIs in the route guide service are demonstrated using the RouteGuideServer and the following clients:
-
RouteGuideClient -
getFeature
API that uses the aggregated programming paradigm. -
RouteGuideRequestStreamingClient -
recordRoute
API that uses the request streaming programming paradigm. -
RouteGuideResponseStreamingClient -
recordRoute
API that uses the response streaming programming paradigm. -
RouteGuideStreamingClient -
recordRoute
API that uses the bi-directional streaming programming paradigm.
Blocking
Blocking processing for different APIs in the route guide service are demonstrated using the BlockingRouteGuideServer and the following clients:
-
BlockingRouteGuideClient -
getFeature
API that uses the aggregated programming paradigm. -
BlockingRouteGuideRequestStreamingClient -
recordRoute
API that uses the request streaming programming paradigm. -
BlockingRouteGuideResponseStreamingClient -
recordRoute
API that uses the response streaming programming paradigm. -
BlockingRouteGuideStreamingClient -
recordRoute
API that uses the bi-directional streaming programming paradigm.
Compression
Extends the async "Hello World" example to demonstrate compression of the response body.
-
CompressionExampleServer - Waits for hello request from the client and responds with a compressed greeting response.
-
CompressionExampleClient - Sends a hello request to the server and receives a compressed greeting response.
Deadlines
Extends the async "Hello World" example to demonstrate gRPC deadlines (aka timeout).
-
DeadlineServer – Waits for hello request from the client and, after 5 seconds of delay, responds with a greeting response.
-
DeadlineClient – Sends hello requests to the server with 1 minute deadline and 3 second deadline and receives a greeting response within that time or cancels the request.
Observer
This example demonstrates the following: - Use of GrpcLifecycleObserver to log a summary of each request/response.
Using the following classes:
-
LifecycleObserverServer - A server that installs a GrpcLifecycleObserver on the server builder.
-
LifecycleObserverClient - A client that installs a GrpcLifecycleObserver on via a client filter on the client builder.
Application Errors
The gRPC protocol supports propagating application level errors, and also provides serialization/deserialization of
these objects. This example demonstrates a server returning an application level error to the client via the gRPC
transport. The client intentionally omits the token
field which is required, and the server returns an application
level error. In this case the application level error type happens to be defined in
error_details.proto, but it
could be any protobuf object.
-
ErrorExampleServer - Requires each request has a non-empty
token
field or else returns an error. -
ErrorExampleClient - Sends a request with missing
token
field to simulate an error condition on the server.
Protoc Options
This example demonstrates how options for the servicetalk-grpc-protoc plugin can be used. See protoc-options for more details.