I have written a simple grpc-connection-library in Go.
The gRPC connection flow among server/client synchronized using the Ping/Pong services.
gRPC connection library supports connection pool reuse the gRPC client connection instance.
Concurrency Pipeline design pattern synchronizes the data flow among several stages while creating the connection pool.
The selection process of the gRPC connection instance from the pool is designed using the reflect.SelectCase that supports pseudo-random technique for choosing among different cases.
go-batch processing library implemented to divide the connection instances from the pool into batches.
The grpc-retry policy helps to retry the failure of gRPC connections with backoff strategy.
The grpclog will show the internal connection lifecycle that will be useful to debug the connection flow.