gRPC Retry Golang Library
gRPC golang library does not allow to reconnect after failures. This package provides a server wrapper to handle that.
Example
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
defer cancel()
srv := server.New(server.Params{
Address: "0.0.0.0:9090",
RetryTimeout: time.Second,
OnRetryFn: func(err error) { log.Println("restarting server after error:", err) },
})
go func() {
<-ctx.Done()
srv.GracefulStop()
}()
myrpc.RegisterMyServer(srv, myrpcserver.New())
srv.Run(ctx)