package naming

import "go.etcd.io/etcd/client/v3/naming"

Package naming provides:

To use, first import the packages:

import (
	"go.etcd.io/etcd/client/v3"
	"go.etcd.io/etcd/client/v3/naming/endpoints"
	"go.etcd.io/etcd/client/v3/naming/resolver"
	"google.golang.org/grpc"
)

First, register new endpoint addresses for a service:

func etcdAdd(c *clientv3.Client, service, addr string) error {
	em := endpoints.NewManager(c, service)
	return em.AddEndpoint(c.Ctx(), service+"/"+addr, endpoints.Endpoint{Addr:addr});
}

Dial an RPC service using the etcd gRPC resolver and a gRPC Balancer:

func etcdDial(c *clientv3.Client, service string) (*grpc.ClientConn, error) {
	etcdResolver, err := resolver.NewBuilder(c);
	if err { return nil, err }
	return  grpc.Dial("etcd:///" + service, grpc.WithResolvers(etcdResolver))
}

Optionally, force delete an endpoint:

func etcdDelete(c *clientv3, service, addr string) error {
	em := endpoints.NewManager(c, service)
	return em.DeleteEndpoint(c.Ctx(), service+"/"+addr)
}

Or register an expiring endpoint with a lease:

func etcdAdd(c *clientv3.Client, lid clientv3.LeaseID, service, addr string) error {
	em := endpoints.NewManager(c, service)
	return em.AddEndpoint(c.Ctx(), service+"/"+addr, endpoints.Endpoint{Addr:addr}, clientv3.WithLease(lid));
}

Index

Source Files

doc.go

Directories

PathSynopsis
naming/endpoints
naming/endpoints/internal
naming/resolver
Version
v3.5.18 (latest)
Published
Jan 24, 2025
Platform
linux/amd64
Last checked
21 hours ago

Tools for package owners.