Documentation ¶
Overview ¶
Package register is an interface for service discovery
Index ¶
- Constants
- Variables
- func NewContext(ctx context.Context, c Register) context.Context
- type DeregisterOption
- type DeregisterOptions
- type Endpoint
- type Event
- type EventType
- type ListOption
- type ListOptions
- type LookupOption
- type LookupOptions
- type Node
- type Option
- func Addrs(addrs ...string) Option
- func Context(ctx context.Context) Option
- func Logger(l logger.Logger) Option
- func Meter(m meter.Meter) Option
- func Name(n string) Option
- func SetOption(k, v interface{}) Option
- func TLSConfig(t *tls.Config) Option
- func Timeout(t time.Duration) Option
- func Tracer(t tracer.Tracer) Option
- type Options
- type Register
- type RegisterOption
- type RegisterOptions
- type Result
- type Service
- type Value
- type WatchOption
- type WatchOptions
- type Watcher
Constants ¶
const ( // WildcardDomain indicates any domain WildcardDomain = "*" // DefaultDomain to use if none was provided in options DefaultDomain = "micro" )
Variables ¶
var ( // DefaultRegister is the global default register DefaultRegister Register = NewRegister() // ErrNotFound returned when LookupService is called and no services found ErrNotFound = errors.New("service not found") // ErrWatcherStopped returned when when watcher is stopped ErrWatcherStopped = errors.New("watcher stopped") )
Functions ¶
Types ¶
type DeregisterOption ¶
type DeregisterOption func(*DeregisterOptions)
DeregisterOption option is used to deregister service
func DeregisterContext ¶
func DeregisterContext(ctx context.Context) DeregisterOption
func DeregisterDomain ¶
func DeregisterDomain(d string) DeregisterOption
func DeregisterTimeout ¶
func DeregisterTimeout(t int) DeregisterOption
type DeregisterOptions ¶
type DeregisterOptions struct { Context context.Context // Domain the service was registered in Domain string // Atempts specify max attempts for deregister Attempts int }
func NewDeregisterOptions ¶
func NewDeregisterOptions(opts ...DeregisterOption) DeregisterOptions
type Endpoint ¶
type Endpoint struct { Name string `json:"name"` Request *Value `json:"request"` Response *Value `json:"response"` Metadata metadata.Metadata `json:"metadata"` }
Endpoint holds endpoint register info
func ExtractEndpoint ¶
ExtractEndpoint extract *Endpoint from reflect.Method
type Event ¶
type Event struct { // Id is register id Id string // Type defines type of event Type EventType // Timestamp is event timestamp Timestamp time.Time // Service is register service Service *Service }
Event is register event
type ListOption ¶
type ListOption func(*ListOptions)
ListOption option is used to list services
func ListContext ¶
func ListContext(ctx context.Context) ListOption
func ListDomain ¶
func ListDomain(d string) ListOption
type ListOptions ¶
func NewListOptions ¶
func NewListOptions(opts ...ListOption) ListOptions
type LookupOption ¶
type LookupOption func(*LookupOptions)
LookupOption option is used to get service
func LookupContext ¶ added in v3.2.2
func LookupContext(ctx context.Context) LookupOption
func LookupDomain ¶ added in v3.2.2
func LookupDomain(d string) LookupOption
type LookupOptions ¶
type LookupOptions struct { Context context.Context // Domain to scope the request to Domain string }
func NewLookupOptions ¶
func NewLookupOptions(opts ...LookupOption) LookupOptions
type Node ¶
type Node struct { Id string `json:"id"` Address string `json:"address"` Metadata metadata.Metadata `json:"metadata"` }
Node holds node register info
type Option ¶
type Option func(*Options)
Option func signature
type Options ¶
type Options struct { Name string Addrs []string Timeout time.Duration TLSConfig *tls.Config // Logger that will be used Logger logger.Logger // Meter that will be used Meter meter.Meter // Tracer Tracer tracer.Tracer // Other options for implementations of the interface // can be stored in a context Context context.Context }
func NewOptions ¶
type Register ¶
type Register interface { Name() string Init(...Option) error Options() Options Connect(context.Context) error Disconnect(context.Context) error Register(context.Context, *Service, ...RegisterOption) error Deregister(context.Context, *Service, ...DeregisterOption) error LookupService(context.Context, string, ...LookupOption) ([]*Service, error) ListServices(context.Context, ...ListOption) ([]*Service, error) Watch(context.Context, ...WatchOption) (Watcher, error) String() string }
Register provides an interface for service discovery and an abstraction over varying implementations {consul, etcd, zookeeper, ...}
func FromContext ¶
FromContext get register from context
func NewRegister ¶
NewRegister returns a new noop register
type RegisterOption ¶
type RegisterOption func(*RegisterOptions)
RegisterOption option is used to register service
func RegisterAttempts ¶
func RegisterAttempts(t int) RegisterOption
func RegisterContext ¶
func RegisterContext(ctx context.Context) RegisterOption
func RegisterDomain ¶
func RegisterDomain(d string) RegisterOption
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 // Domain to register the service in Domain string // Attempts specify attempts for register Attempts int }
func NewRegisterOptions ¶
func NewRegisterOptions(opts ...RegisterOption) RegisterOptions
type Result ¶
Result is returned by a call to Next on the watcher. Actions can be create, update, delete
type Service ¶
type Service struct { Name string `json:"name"` Version string `json:"version"` Metadata metadata.Metadata `json:"metadata"` Endpoints []*Endpoint `json:"endpoints"` Nodes []*Node `json:"nodes"` }
Service holds service register info
type Value ¶
type Value struct { Name string `json:"name"` Type string `json:"type"` Values []*Value `json:"values"` }
Value holds additional kv stuff
func ExtractSubValue ¶
ExtractSubValue exctact *Value from reflect.Type
type WatchOption ¶
type WatchOption func(*WatchOptions)
WatchOption option is used to watch service changes
func WatchContext ¶
func WatchContext(ctx context.Context) WatchOption
func WatchDomain ¶
func WatchDomain(d string) WatchOption
type WatchOptions ¶
type WatchOptions struct { // Specify a service to watch // If blank, the watch is for all services Service string // Other options for implementations of the interface // can be stored in a context Context context.Context // Domain to watch Domain string }
func NewWatchOptions ¶
func NewWatchOptions(opts ...WatchOption) WatchOptions