...
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.