...
Package registry
Overview ▹
Index ▹
Variables
var (
DefaultRegistry = newConsulRegistry()
ErrNotFound = errors.New("not found")
)
func Deregister ¶
func Deregister(s *Service) error
Deregister a service node
func GetService ¶
func GetService(name string) ([]*Service, error)
Retrieve a service. A slice is returned since we separate Name/Version.
func ListServices ¶
func ListServices() ([]*Service, error)
List the services. Only returns service names
func Register ¶
func Register(s *Service, opts ...RegisterOption) error
Register a service node. Additionally supply options such as TTL.
func String ¶
func String() string
type Endpoint ¶
type Endpoint struct {
Name string `json:"name"`
Request *Value `json:"request"`
Response *Value `json:"response"`
Metadata map[string]string `json:"metadata"`
}
type Node ¶
type Node struct {
Id string `json:"id"`
Address string `json:"address"`
Port int `json:"port"`
Metadata map[string]string `json:"metadata"`
}
type Option ¶
type Option func(*Options)
func Addrs ¶
func Addrs(addrs ...string) Option
Addrs is the registry addresses to use
func Secure ¶
func Secure(b bool) Option
Secure communication with the registry
func TLSConfig ¶
func TLSConfig(t *tls.Config) Option
Specify TLS Config
func Timeout ¶
func Timeout(t time.Duration) Option
type Options ¶
type Options struct {
Addrs []string
Timeout time.Duration
Secure bool
TLSConfig *tls.Config
// Other options for implementations of the interface
// can be stored in a context
Context context.Context
}
type RegisterOption ¶
type RegisterOption func(*RegisterOptions)
func RegisterTTL ¶
func RegisterTTL(t time.Duration) RegisterOption
type RegisterOptions ¶
type RegisterOptions struct {
TTL time.Duration
// Other options for implementations of the interface
// can be stored in a context
Context context.Context
}
type Registry ¶
The registry provides an interface for service discovery and an abstraction over varying implementations {consul, etcd, zookeeper, ...}
type Registry interface {
Register(*Service, ...RegisterOption) error
Deregister(*Service) error
GetService(string) ([]*Service, error)
ListServices() ([]*Service, error)
Watch() (Watcher, error)
String() string
}
func NewRegistry ¶
func NewRegistry(opts ...Option) Registry
type Result ¶
Result is returned by a call to Next on the watcher. Actions can be create, update, delete
type Result struct {
Action string
Service *Service
}
type Service ¶
type Service struct {
Name string `json:"name"`
Version string `json:"version"`
Metadata map[string]string `json:"metadata"`
Endpoints []*Endpoint `json:"endpoints"`
Nodes []*Node `json:"nodes"`
}
type Value ¶
type Value struct {
Name string `json:"name"`
Type string `json:"type"`
Values []*Value `json:"values"`
}
type Watcher ¶
Watcher is an interface that returns updates about services within the registry.
type Watcher interface {
// Next is a blocking call
Next() (*Result, error)
Stop()
}
func Watch ¶
func Watch() (Watcher, error)
Watch returns a watcher which allows you to track updates to the registry.
ActiveGo 1.8