import "github.com/go-coldbrew/grpcpool"grpcpool is a pool of grpc.ClientConns. It implements grpc.ClientConnInterface to enable it to be used directly with generated proto stubs. It is based on https://github.com/googleapis/google-api-go-client/blob/v0.115.0/transport/grpc/pool.go
type ConnPool
ConnPool is a pool of grpc.ClientConns.
type ConnPool interface {
// Conn returns a ClientConn from the pool.
//
// Conns aren't returned to the pool.
Conn() *grpc.ClientConn
// Num returns the number of connections in the pool.
//
// It will always return the same value.
Num() int
// Close closes every ClientConn in the pool.
//
// The error returned by Close may be a single error or multiple errors.
Close() error
// ConnPool implements grpc.ClientConnInterface to enable it to be used directly with generated proto stubs.
grpc.ClientConnInterface
}func Dial
func Dial(target string, num uint, opts ...grpc.DialOption) (ConnPool, error)Dial creates a new ConnPool with num connections to target.
func DialContext
func DialContext(_ context.Context, target string, num uint, opts ...grpc.DialOption) (ConnPool, error)DialContext creates a new ConnPool with num connections to target.
Note: The ctx parameter is retained for backward compatibility but is not used. Cancellation and deadlines in ctx do not affect connection creation.
func New
func New(conns []*grpc.ClientConn) ConnPoolNew creates a new ConnPool from the given connections.
Example
package main
import (
"fmt"
"github.com/go-coldbrew/grpcpool"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func main() {
// Create individual gRPC connections (NewClient is lazy — no real connection yet)
conn1, err := grpc.NewClient("localhost:9090",
grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
panic(err)
}
conn2, err := grpc.NewClient("localhost:9090",
grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
panic(err)
}
// Create a round-robin pool from existing connections
pool := grpcpool.New([]*grpc.ClientConn{conn1, conn2})
defer pool.Close()
fmt.Println("pool size:", pool.Num())
}Generated by gomarkdoc