...

Source file src/github.com/go-kit/kit/sd/zk/registrar.go

Documentation: github.com/go-kit/kit/sd/zk

     1  package zk
     2  
     3  import "github.com/go-kit/log"
     4  
     5  // Registrar registers service instance liveness information to ZooKeeper.
     6  type Registrar struct {
     7  	client  Client
     8  	service Service
     9  	logger  log.Logger
    10  }
    11  
    12  // Service holds the root path, service name and instance identifying data you
    13  // want to publish to ZooKeeper.
    14  type Service struct {
    15  	Path string // discovery namespace, example: /myorganization/myplatform/
    16  	Name string // service name, example: addscv
    17  	Data []byte // instance data to store for discovery, example: 10.0.2.10:80
    18  	node string // Client will record the ephemeral node name so we can deregister
    19  }
    20  
    21  // NewRegistrar returns a ZooKeeper Registrar acting on the provided catalog
    22  // registration.
    23  func NewRegistrar(client Client, service Service, logger log.Logger) *Registrar {
    24  	return &Registrar{
    25  		client:  client,
    26  		service: service,
    27  		logger: log.With(logger,
    28  			"service", service.Name,
    29  			"path", service.Path,
    30  			"data", string(service.Data),
    31  		),
    32  	}
    33  }
    34  
    35  // Register implements sd.Registrar interface.
    36  func (r *Registrar) Register() {
    37  	if err := r.client.Register(&r.service); err != nil {
    38  		r.logger.Log("err", err)
    39  	} else {
    40  		r.logger.Log("action", "register")
    41  	}
    42  }
    43  
    44  // Deregister implements sd.Registrar interface.
    45  func (r *Registrar) Deregister() {
    46  	if err := r.client.Deregister(&r.service); err != nil {
    47  		r.logger.Log("err", err)
    48  	} else {
    49  		r.logger.Log("action", "deregister")
    50  	}
    51  }
    52  

View as plain text