An open API service indexing awesome lists of open source software.

https://github.com/go-coldbrew/grpcpool

grpcpool is a pool of grpc.ClientConns
https://github.com/go-coldbrew/grpcpool

connection-pool grpc load-balancer

Last synced: about 1 month ago
JSON representation

grpcpool is a pool of grpc.ClientConns

Awesome Lists containing this project

README

          

[![CI](https://github.com/go-coldbrew/grpcpool/actions/workflows/go.yml/badge.svg)](https://github.com/go-coldbrew/grpcpool/actions/workflows/go.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/go-coldbrew/grpcpool)](https://goreportcard.com/report/github.com/go-coldbrew/grpcpool)
[![GoDoc](https://pkg.go.dev/badge/github.com/go-coldbrew/grpcpool.svg)](https://pkg.go.dev/github.com/go-coldbrew/grpcpool)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

# grpcpool

```go
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

## Index

- [type ConnPool](<#ConnPool>)
- [func Dial\(target string, num uint, opts ...grpc.DialOption\) \(ConnPool, error\)](<#Dial>)
- [func DialContext\(\_ context.Context, target string, num uint, opts ...grpc.DialOption\) \(ConnPool, error\)](<#DialContext>)
- [func New\(conns \[\]\*grpc.ClientConn\) ConnPool](<#New>)


## type [ConnPool]()

ConnPool is a pool of grpc.ClientConns.

```go
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]()

```go
func Dial(target string, num uint, opts ...grpc.DialOption) (ConnPool, error)
```

Dial creates a new ConnPool with num connections to target.


### func [DialContext]()

```go
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]()

```go
func New(conns []*grpc.ClientConn) ConnPool
```

New creates a new ConnPool from the given connections.

Example

```go
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]()