grpcp is a Grpc Persistent Connection Pool.
go get -u github.com/0x5010/grpcp
default
import (
"context"
"fmt"
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
)
func main() {
var addr, name string
conn, _ := grpc.Dial(addr, grpc.WithInsecure())
defer conn.Close()
client := pb.NewGreeterClient(conn)
r, _ := client.SayHello(context.Background(), &pb.HelloRequest{Name: name})
fmt.Println(r.GetMessage())
}
with grpcp
import (
"context"
"fmt"
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
)
func main() {
var addr, name string
conn, _ := grpcp.GetConn(addr) // get conn with grpcp default pool
// defer conn.Close() // no close, close will disconnect
client := pb.NewGreeterClient(conn)
r, _ := client.SayHello(context.Background(), &pb.HelloRequest{Name: name})
fmt.Println(r.GetMessage())
}
custom dial function
import (
"context"
"fmt"
"github.com/0x5010/grpcp"
"google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
)
func main() {
var addr, name string
pool := grpcp.New(func(addr string) (*grpc.ClientConn, error) {
return grpc.Dial(
addr,
grpc.WithInsecure(),
)
})
conn, _ := pool.GetConn(addr)
client := pb.NewGreeterClient(conn)
r, _ := client.SayHello(context.Background(), &pb.HelloRequest{Name: name})
fmt.Println(r.GetMessage())
}